我有一个二进制文件- Windows静态库(*.lib)。 是否有一种简单的方法可以从库中找到函数名及其接口?

类似emfar和elfdump实用程序(在Linux系统上)?


当前回答

假设讨论的是静态库,DUMPBIN /SYMBOLS显示了库中的函数和数据对象。如果谈论的是导入库(.lib用于引用从DLL导出的符号),则需要DUMPBIN /EXPORTS。

请注意,对于与“C”二进制接口链接的函数,这仍然不会为您提供返回值、参数或调用约定。这些信息根本没有编码在.lib中;为了正确调用它们,你必须提前知道(例如,通过头文件中的原型)。

对于与c++二进制接口链接的函数,调用约定和参数都编码在函数的导出名称中(也称为“name mangling”)。DUMPBIN /SYMBOLS将向您显示“损坏”的函数名称以及解码后的参数集。

其他回答

我想要一个像libfile这样的工具。unix中的A。 windows中的等价文件是lib.exe /list libfile.lib。

假设讨论的是静态库,DUMPBIN /SYMBOLS显示了库中的函数和数据对象。如果谈论的是导入库(.lib用于引用从DLL导出的符号),则需要DUMPBIN /EXPORTS。

请注意,对于与“C”二进制接口链接的函数,这仍然不会为您提供返回值、参数或调用约定。这些信息根本没有编码在.lib中;为了正确调用它们,你必须提前知道(例如,通过头文件中的原型)。

对于与c++二进制接口链接的函数,调用约定和参数都编码在函数的导出名称中(也称为“name mangling”)。DUMPBIN /SYMBOLS将向您显示“损坏”的函数名称以及解码后的参数集。

1)打开VS 2017(或你机器上的任何版本)的开发人员命令提示符(它应该位于:开始菜单->所有程序-> Visual Studio 2017(或你机器上的任何版本)-> Visual Studio Tools ——> VS 2017开发者命令提示符。

2)输入如下命令:

my_lib_name.lib . dumpbin /EXPORTS

LIB.EXE是VS的图书管理员

http://msdn.microsoft.com/en-us/library/7ykb2k5f (VS.80) . aspx

(像Unix上的libtool)

DUMPBIN /EXPORTS将获得大部分信息,并点击MSDN将获得其余的信息。

获得一个Visual Studio包;c++