在 C++ 的 dll 中找到与方法相对应的参数

14

好的,我可以使用dumpbin.exe /exports库.dll来查找dll中的所有方法。但是如果没有头文件,我怎么找出要传递给它们的参数呢?


1个回答

11

对于常规的C风格导出(例如Windows API DLL):你不能做到。这些信息不存储在DLL中,并且在编译后必然会丢失(除非你有头文件或调试符号)。

另一方面,C++导出将其签名作为名称修饰函数名的一部分来存储,您可以使用Dependency Walker或类似工具查看它们,或者使用UNDNAME工具DUMPBIN的/SYMBOLS选项手动解析它们。


啊,太好了。谢谢。但是……我该如何解读这些名称呢? 例如这些方法名称: ?GetCpuSpeed@@YAHXZ ?GetCpuSpeed@CDLL1@@QAEHXZ有什么想法吗? - Presidenten
至少Dependency Walker可以通过某些菜单项对名称进行解缠。有关详细信息,请参见http://en.wikipedia.org/wiki/Name_mangling的“外部链接”部分。 - Philipp
更多链接:http://msdn.microsoft.com/en-us/library/5x49w699.aspx http://msdn.microsoft.com/en-us/library/b06ww5dd.aspx - Philipp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接