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

Posted

技术标签:

【中文标题】如何查看 Windows 库 (*.lib) 的内容【英文标题】:How to See the Contents of Windows library (*.lib) 【发布时间】:2010-09-23 05:56:12 【问题描述】:

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

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

【问题讨论】:

注意:特定于 .NET 的命令提示符随 Visual Studio 版本提供,但不随 Express 版本提供。来自:social.msdn.microsoft.com/Forums/en-US/… 【参考方案1】:

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

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

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

【讨论】:

现在 /SYMBOLS 和 /EXPORTS 都不起作用。我必须使用带有 |more 管道的 /ALL 来查看 .lib 文件中的所有函数。 @user5280911 dumpbin /symbols 今天在 Win 10 上使用 VS 2019 开发人员命令提示符在静态库 .lib 文件上为我工作得很好,为什么你说这些天它不起作用?跨度> 您可以使用/OUT:filename 将输出导出到文件 什么是 DUMPBIN ?它在哪里?【参考方案2】:

打开 Visual Studio 命令提示符

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

lib /LIST openssl.x86.lib

用 7-zip 打开它 :) 它是一个 AR 存档

【讨论】:

酷炫的 7-zip 技巧似乎有两个 .txt 文件,它们是什么意思? 这些都只是列出了 DLL 名称的负载。 dumpbin /exports 列出了实际的符号。【参考方案3】:

我想要一个类似ar t libfile.a in unix 的工具。 Windows 等效项是lib.exe /list libfile.lib

【讨论】:

是的 lib 将(仅)显示 obj 文件;它不会显示 obj 文件中的函数和数据。【参考方案4】:

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

【讨论】:

【参考方案5】:

LIB.EXE 是 VS 的图书管理员

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

(类似于 Unix 上的 libtool)

【讨论】:

【参考方案6】:

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

获取 Visual Studio 软件包之一; C++

【讨论】:

【参考方案7】:

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

2) 输入以下命令:

dumpbin /EXPORTS my_lib_name.lib

【讨论】:

【参考方案8】:

就像在其他答案中看到的那样,您必须打开您的 Visual Studio 版本中提供的开发人员命令提示符,以便在您的执行路径中包含 dumpbin.exe。否则,您可以手动设置必要的环境变量。

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

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

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

【讨论】:

以上是关于如何查看 Windows 库 (*.lib) 的内容的主要内容,如果未能解决你的问题,请参考以下文章

ID3标签提取

如何在 Windows 上构建 lib2geom

静态库与Windows平台导入库

如何将库构建为 .dll 而不是 .lib

windows中静态库lib和动态dll的区别及使用方法

确定 Windows 上静态库 (LIB) 的 CPU 架构