|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6258
|
[C++] Demangling funzioni
Ciao a tutti e buon anno.
Vorrei sapere come fare il demangling delle funzioni C++,in quanto il linker tira fuori nomi delle funzioni piuttosto incomprensibili nelle schermate di errore. So che questo comportamento è normale, e so che è possibile mascherarlo, facendogli comunque ritornare il nome corretto senza alcun prefisso o suffisso aggiunto da lui. Ma come si fa? Si deve inserire del codice particolare nel sorgente? C'è qualche opzione da passare in fase di compilazione? Sto usando icpc e g++ come compilatori. Grazie a tutti. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Devi usare
Codice:
extern "C" Codice:
extern "C" void func(int x) { }
Codice:
extern "C" {
void func(int x) { }
void func2(int x) { }
}
http://developers.sun.com/solaris/ar...tml#cpp_from_c Comunque, se è solo per trovare a che funzione si riferisce il linker, pur essendo "manglingata" la stringa contiene il nome della funzione... prova a postare l'output del linker. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
inoltre se hai compilato con Visual C++ o comunque col compilatore Microsoft esiste un tool per il demangling dei nomi dei simboli, si chiama undname.exe.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6258
|
Quote:
Perchè devo dichiararle come funzioni C? |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6258
|
Quote:
c++filt -m -w 40 functions.o Ma il flag -m non esiste per questo comando.. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
In quel modo non le dichiari come funzioni c, infatti possono benissimo contenere codice c++ (tranne le funzioni template mi pare di aver letto). Non cambia niente.
Dal link che ti ho postato: Quote:
PS: questo topic è già ai primi posti se si ricerca demangling... http://www.google.it/search?hl=it&q=...nG=Cerca&meta= |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6258
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Guarda l'help...purtroppo non sembra essere implementata quella opzione in linux.
Ultima modifica di cionci : 03-01-2009 alle 01:06. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6258
|
Quote:
Sul comando per AIX invece c'è, ed è proprio il flag -m .. Ultima modifica di Unrue : 03-01-2009 alle 10:22. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Cerca di trovare il modo per esportare i simboli da un modulo...sinceramente non riesco ad esserti d'aiuto. In caso di errore puoi comunque passare il nome della funzione mangled a quel comando.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:01.




















