我有一个二进制文件 - Windows的静态库(*.lib)。
有没有简单的方法可以从该库中找出函数的名称和接口?
类似于Linux系统上的emfar
和elfdump
实用工具?
我有一个二进制文件 - Windows的静态库(*.lib)。
有没有简单的方法可以从该库中找出函数的名称和接口?
类似于Linux系统上的emfar
和elfdump
实用工具?
DUMPBIN /SYMBOLS
显示库中的函数和数据对象。如果您谈论的是导入库(.lib
用于引用从 DLL 导出的符号),则需要使用 DUMPBIN /EXPORTS
。.lib
中;您必须提前知道这些(例如通过头文件中的原型)才能正确调用它们。DUMPBIN /SYMBOLS
将显示“名称修饰”的函数名称以及解码后的参数集合。.lib
文件运行dumpbin /symbols
命令,今天我成功地执行了该命令。你为什么说现在无法正常工作? - Jake Cobb/OUT:文件名
将输出导出到文件。 - psqdumpbin /exports
在ucrt.lib
中不显示__imp__calloc
,例如(尽管引用出现在用户代码中),而dumpbin /linkermember:1
则显示它...提示:使用| find /i "calloc"
来过滤您搜索的符号。 - MattTT打开 Visual Studio 命令提示符
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
或者lib /LIST openssl.x86.lib
或者用7-zip打开 :) 这是一个AR存档
我希望在Unix中有一个像 ar t libfile.a
这样的工具。
Windows的等价工具是 lib.exe /list libfile.lib
。
LIB.EXE是Visual Studio中的库管理员。
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
类似于Unix上的libtool。
如其他答案所述,您需要打开Visual Studio版本中提供的开发人员命令提示符,以使dumpbin.exe
在您的执行路径中。否则,您可以手动设置必要的环境变量。
dumpbin /EXPORTS yourlibrary.lib
通常只会显示一个小列表的符号。在许多情况下,它不会显示库导出的函数。
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
将显示这些符号,但也会显示大量其他符号。因此,您需要过滤它们,可能使用管道到findstr
(如果您想使用MS-Windows工具),或者grep
。
使用这些工具之一搜索Static
关键字似乎是一个很好的提示。
1) 打开 Visual Studio 2017 (或你电脑上的任何版本) 的开发人员命令提示符(它应该位于:开始菜单 --> 所有程序 --> Visual Studio 2017 (或你电脑上的任何版本) --> Visual Studio 工具 --> 开发人员命令提示符 for VS 2017).
2) 输入下面的命令:
dumpbin /EXPORTS my_lib_name.lib