如何查看Windows库的内容(* .lib)
-
08-07-2019 - |
题
我有一个二进制文件--Windows静态库(* .lib)。
有没有一种简单的方法可以从该库中找出函数及其接口的名称?
类似于emfar
和elfdump
实用程序(在Linux系统上)?
解决方案
假设您正在谈论静态库,DUMPBIN /SYMBOLS
显示库中的函数和数据对象。如果您正在谈论导入库(.lib
用于引用从DLL导出的符号),那么您需要DUMPBIN /EXPORTS
。
请注意,对于与<!>“C <!>”链接的函数;二进制接口,这仍然不会让你返回值,参数或调用约定。该信息根本不在<=>中编码;你必须提前知道(例如通过头文件中的原型)才能正确调用它们。
对于与C ++二进制接口链接的函数,调用约定和参数在函数的导出名称中编码(也称为<!> quot; name mangling <!> quot;)。 <=>将显示<!>“; mangled <!>”;函数名称以及解码的参数集。
其他提示
打开可视命令控制台(Visual Studio命令提示符)
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
或
lib /LIST openssl.x86.lib
或只需用7-zip :)打开它的AR档案
我想在unix中使用像ar t libfile.a
这样的工具。
等效的窗口是lib.exe /list libfile.lib
。
<!> quot; dumpbin -exports <!> quot;适用于DLL,但有时可能不适用于lib。对于lib,我们可以使用<!> quot; dumpbin -linkermember <!> quot;或者只是<!> quot; dumpbin -linkermember:1 <!> quot;。
DUMPBIN / EXPORTS将获得大部分信息,其他人将获得MSDN。
获取一个Visual Studio包; C ++
1)打开VS 2017的开发人员命令提示符(或您机器上的任何版本)(它应位于:开始菜单 - <!> gt;所有程序 - <!> gt; Visual Studio 2017(或您机器上的任何版本) - <!> gt; Visual Studio工具 - GT <!>; VS 2017开发人员命令提示符。
2)输入以下命令:
dumpbin /EXPORTS my_lib_name.lib
就像在其他答案中可以看到的那样,您必须在您的Visual Studio版本中打开一个Developer Command Prompt,以便在您的执行路径中dumpbin.exe
。否则,您可以手动设置必要的环境变量。
dumpbin /EXPORTS yourlibrary.lib
通常会显示一小部分符号。在许多情况下,它不会显示库导出的功能。
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
将显示符号,但也是一个令人难以置信的大量其他符号。因此,您必须过滤它们,可能使用管道findstr
(如果您需要MS-Windows工具)或grep
。
使用其中一种工具搜索Static
关键字似乎是一个很好的提示。