2010-07-12 4 views
6

Ok, quindi posso usare dumpbin.exe/exports library.dll per trovare tutti i metodi nella dll.Trovare argomenti che vanno con i metodi in C++ dll

... ma come faccio a trovare gli argomenti da passare in loro? Senza un file di intestazione, ovviamente.

+0

domanda simile: [Chiama la funzione in C++ dll senza intestazione] (http://stackoverflow.com/questions/554551/call-function-in-c-dll-without-header) – Amro

risposta

8

Per le consuete esportazioni in stile C (ad es. DLL API Windows): non è possibile. Questa informazione non è memorizzata nella DLL e viene inevitabilmente persa dopo la compilazione (a meno che non si disponga delle intestazioni o dei simboli di debug).

Le esportazioni di C++, invece, memorizzano la propria firma come parte del nome della funzione distrutta e possono essere visualizzate utilizzando Dependency Walker o strumenti simili o nascoste manualmente utilizzando the UNDNAME tool o DUMPBIN's /SYMBOLS option.

+0

Ahh dolce. Grazie. Ma ... come decifrare i nomi? Ad esempio, i nomi di questo metodo: ? GetCpuSpeed ​​@@ YAHXZ ? GetCpuSpeed ​​@ CDLL1 @@ QAEHXZ Qualche idea? – Presidenten

+0

Almeno Dependency Walker è in grado di demarcare i nomi tramite alcune voci di menu. Per informazioni dettagliate, vedere la sezione "Collegamenti esterni" di http://en.wikipedia.org/wiki/Name_mangling – Philipp

+0

Altri collegamenti: http://msdn.microsoft.com/en-us/library/5x49w699.aspx http: //msdn.microsoft.com/en-us/library/b06ww5dd.aspx – Philipp