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

Nic*_*lin 165 windows static-libraries libraries

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

类似于emfarelfdump实用程序(在Linux系统上)?

Tim*_*her 185

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

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

对于与C++二进制接口链接的函数,调用约定和参数在函数的导出名称中编码(也称为"名称修改"). DUMPBIN /SYMBOLS将显示"受损"函数名称以及已解码的参数集.

  • @user5280911 `dumpbin /symbols` 今天在 Win 10 上对我来说工作得很好,在静态库 `.lib` 文件上使用 VS 2019 开发人员命令提示符,为什么你说它现在不起作用? (5认同)
  • / SYMBOLS和/ EXPORTS现在都不起作用。我必须使用/ ALL和更多管道来查看.lib文件中的所有功能。 (4认同)
  • 您可以使用“/OUT:filename”将输出导出到文件 (2认同)
  • 什么是DUMPBIN?它在哪里 ? (2认同)

Tan*_*guy 86

打开可视命令控制台(Visual Studio命令提示符)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib
Run Code Online (Sandbox Code Playgroud)

要么

lib /LIST openssl.x86.lib
Run Code Online (Sandbox Code Playgroud)

或者只是用7-zip打开它 :)它是一个AR档案

  • 我从来不知道你可以用7-zip打开.lib文件,非常感谢! (15认同)
  • 7-zip的酷炫技巧似乎有两个.txt文件,它们是什么意思? (14认同)
  • 感谢"或者只是用7-zip打开它:)它的AR档案" (6认同)
  • 它们都只是列出了一堆 DLL 名称。`dumpbin /exports` 列出了实际的符号。 (3认同)

lgw*_*est 20

我想要一个像ar t libfile.aunix 一样的工具.
窗户相当于lib.exe /list libfile.lib.

  • 是的lib将(仅)显示obj文件; 它不会显示obj文件中的函数和数据. (4认同)

Lou*_*nco 13

LIB.EXE是VS的图书管理员

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

(比如Unix上的libtool)


Fra*_*ank 13

"dumpbin -exports"适用于dll,但有时可能不适用于lib.对于lib,我们可以使用"dumpbin -linkermember"或"dumpbin -linkermember:1".


jim*_*jim 12

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使用这些工具之一搜索关键字似乎是一个很好的提示。