我有一个二进制文件- Windows静态库(*.lib)。 是否有一种简单的方法可以从库中找到函数名及其接口?
类似emfar和elfdump实用程序(在Linux系统上)?
我有一个二进制文件- Windows静态库(*.lib)。 是否有一种简单的方法可以从库中找到函数名及其接口?
类似emfar和elfdump实用程序(在Linux系统上)?
当前回答
LIB.EXE是VS的图书管理员
http://msdn.microsoft.com/en-us/library/7ykb2k5f (VS.80) . aspx
(像Unix上的libtool)
其他回答
我想要一个像libfile这样的工具。unix中的A。 windows中的等价文件是lib.exe /list libfile.lib。
就像在其他答案中看到的一样,你必须打开Visual Studio版本中提供的开发人员命令提示符,将dumpbin.exe放在执行路径中。否则,您可以手动设置必要的环境变量。
dumpbin /EXPORTS你的库。Lib通常只显示一个很小的符号列表。在许多情况下,它不会显示库导出的函数。
dumpbin /SYMBOLS /EXPORTS你的库。Lib会展示这些符号,但也会展示数量惊人的其他符号。因此,您必须过滤它们,可能使用findstr(如果您需要MS-Windows工具)或grep的管道。
使用这些工具之一搜索Static关键字似乎是一个很好的提示。
假设讨论的是静态库,DUMPBIN /SYMBOLS显示了库中的函数和数据对象。如果谈论的是导入库(.lib用于引用从DLL导出的符号),则需要DUMPBIN /EXPORTS。
请注意,对于与“C”二进制接口链接的函数,这仍然不会为您提供返回值、参数或调用约定。这些信息根本没有编码在.lib中;为了正确调用它们,你必须提前知道(例如,通过头文件中的原型)。
对于与c++二进制接口链接的函数,调用约定和参数都编码在函数的导出名称中(也称为“name mangling”)。DUMPBIN /SYMBOLS将向您显示“损坏”的函数名称以及解码后的参数集。
打开Visual Studio命令提示符
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
or
lib /LIST openssl.x86.lib
或者直接用7-zip打开:)它是一个AR存档
LIB.EXE是VS的图书管理员
http://msdn.microsoft.com/en-us/library/7ykb2k5f (VS.80) . aspx
(像Unix上的libtool)