2010-07-12 2 views
6

Ok, donc je peux utiliser dumpbin.exe/exports library.dll pour trouver toutes les méthodes dans la DLL.Trouver les arguments qui vont avec les méthodes dans le dll de C++

... mais comment trouver les arguments à transmettre? Sans un fichier d'en-tête bien sûr.

+0

question similaire: [Appelez la fonction dans C++ dll sans en-tête] (http://stackoverflow.com/questions/554551/call-function-in-c-dll-without-header) – Amro

Répondre

8

Pour les exportations de style C habituelles (par exemple, DLL API Windows): Vous ne pouvez pas. Cette information n'est pas stockée dans la DLL et est inévitablement perdue après la compilation (sauf si vous avez les en-têtes ou les symboles de débogage). D'autre part, les exportations C++ stockent leur signature dans le nom de la fonction mutilée et vous pouvez les voir en utilisant Dependency Walker ou des outils similaires, ou les démonter manuellement en utilisant the UNDNAME tool ou DUMPBIN's /SYMBOLS option.

+0

Ahh sweet. Merci. Mais ... comment déchiffrer les noms? Par exemple, ces noms de méthode:? GetCpuSpeed ​​@@ YAHXZ GetCpuSpeed ​​@ CDLL1 @@ QAEHXZ Des idées? – Presidenten

+0

Au moins Dépendance Walker est capable de démêler les noms via une entrée de menu. Pour des informations détaillées, voir la section "Liens externes" de http://en.wikipedia.org/wiki/Name_mangling – Philipp

+0

Plus de liens: http://msdn.microsoft.com/en-us/library/5x49w699.aspx http: //msdn.microsoft.com/en-us/library/b06ww5dd.aspx – Philipp

Questions connexes