如何查看Windows库文件(*.lib)的内容

231

我有一个二进制文件 - Windows的静态库(*.lib)。
有没有简单的方法可以从该库中找出函数的名称和接口?

类似于Linux系统上的emfarelfdump实用工具?


1
注意:特定于.NET的命令提示符随附于Visual Studio版本,但不随附于Express版本。来自:https://social.msdn.microsoft.com/Forums/en-US/9f4b8961-63eb-4062-bf3c-12f0126f0e80/how-to-get-visual-studio-command-prompt?forum=Vsexpressvb - isgoed
8个回答

238
假设您谈论的是静态库,DUMPBIN /SYMBOLS 显示库中的函数和数据对象。如果您谈论的是导入库(.lib 用于引用从 DLL 导出的符号),则需要使用 DUMPBIN /EXPORTS
请注意,对于使用“C”二进制界面链接的函数,这仍然无法获取返回值、参数或调用约定。该信息根本不编码在 .lib 中;您必须提前知道这些(例如通过头文件中的原型)才能正确调用它们。
对于使用 C++ 二进制接口链接的函数,调用约定和参数编码在函数的导出名称中(也称为“名称修饰”)。DUMPBIN /SYMBOLS 将显示“名称修饰”的函数名称以及解码后的参数集合。

11
现在,/SYMBOLS和/EXPORTS都不能使用。我必须使用/ALL并带上|more管道才能查看.lib文件中的所有函数。 - user5280911
10
在Windows 10上,使用VS 2019开发者命令提示符对一个静态库.lib文件运行dumpbin /symbols命令,今天我成功地执行了该命令。你为什么说现在无法正常工作? - Jake Cobb
3
你可以使用/OUT:文件名将输出导出到文件。 - psq
2
什么是DUMPBIN?它在哪里? - Sandburg
1
Dumpbin是一个命令行应用程序,与VS一起安装。在VS中,您可以通过“工具”>“命令行”>“开发人员命令提示符”访问它。然后输入“dumpbin”。 - Ben
dumpbin /exportsucrt.lib中不显示__imp__calloc,例如(尽管引用出现在用户代码中),而dumpbin /linkermember:1则显示它...提示:使用| find /i "calloc"来过滤您搜索的符号。 - MattTT

135

打开 Visual Studio 命令提示符

dumpbin /ARCHIVEMEMBERS openssl.x86.lib
或者
lib /LIST openssl.x86.lib

或者用7-zip打开 :) 这是一个AR存档


36
有一个很酷的7-zip技巧,似乎有两个.txt文件,它们是什么意思? - Damian
3
这两者仅列出了一堆DLL名称。“dumpbin /exports”会列出实际的符号。 - Timmmm

22

我希望在Unix中有一个像 ar t libfile.a 这样的工具。
Windows的等价工具是 lib.exe /list libfile.lib


4
Lib 只会显示 obj 文件,不会显示 obj 文件中的函数和数据。 - Sam Hobbs

20
“dumpbin -exports”适用于dll,但有时不适用于lib。对于lib,我们可以使用“dumpbin -linkermember”或只是“dumpbin -linkermember:1”。

16

15

DUMPBIN /EXPORTS 可以获取大部分信息,而查阅 MSDN 可以获取剩余信息。

获取一个 Visual Studio 包;C++。


5

如其他答案所述,您需要打开Visual Studio版本中提供的开发人员命令提示符,以使dumpbin.exe在您的执行路径中。否则,您可以手动设置必要的环境变量。

dumpbin /EXPORTS yourlibrary.lib通常只会显示一个小列表的符号。在许多情况下,它不会显示库导出的函数。

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib将显示这些符号,但也会显示大量其他符号。因此,您需要过滤它们,可能使用管道到findstr(如果您想使用MS-Windows工具),或者grep

使用这些工具之一搜索Static关键字似乎是一个很好的提示。


4

1) 打开 Visual Studio 2017 (或你电脑上的任何版本) 的开发人员命令提示符(它应该位于:开始菜单 --> 所有程序 --> Visual Studio 2017 (或你电脑上的任何版本) --> Visual Studio 工具 --> 开发人员命令提示符 for VS 2017).

2) 输入下面的命令:

dumpbin /EXPORTS my_lib_name.lib


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