2010-07-12 70 views
6

好的,所以我可以使用dumpbin.exe/exports library.dll來查找dll中的所有方法。查找與C++中的方法一致的參數dll的

...但我如何知道哪些參數傳入它們?當然沒有頭文件。

+0

類似的問題:[調用c + + dll無函數函數](http://stackoverflow.com/questions/554551/call-function-in-c-dll-without-header) – Amro 2013-08-13 16:32:17

回答

8

對於通常的C風格導出(例如,Windows API DLL):您不能。這些信息不會存儲在DLL中,編譯後不可避免地會丟失(除非您有頭文件或調試符號)。

另一方面,C++導出會將其簽名存儲爲損壞的函數名稱的一部分,您可以使用Dependency Walker或類似工具查看它們,或使用the UNDNAME toolDUMPBIN's /SYMBOLS option手動將它們取消。

+0

啊啊甜。謝謝。但是...我如何解讀這些名字? 例如這些方法名稱: ?GetCpuSpeed @@ YAHXZ ?GetCpuSpeed @ CDLL1 @@ QAEHXZ 任何想法? – Presidenten 2010-07-12 14:42:55

+0

至少Dependency Walker能夠通過某些菜單條目來縮小名稱。有關詳細信息,請參閱http://en.wikipedia.org/wiki/Name_mangling – Philipp 2010-07-12 14:48:44

+0

的「外部鏈接」部分更多鏈接:http://msdn.microsoft.com/en-us/library/5x49w699.aspx http: //msdn.microsoft.com/en-us/library/b06ww5dd.aspx – Philipp 2010-07-12 14:51:27