导出lib所有符号
本文转自:http://blog.youkuaiyun.com/chief1985/archive/2009/10/27/4734770.aspx
在编译的时候,经常会报LNK2001,这代表找不到符号,一般是缺少库导致的。在某些时候,我们可以通过msdn找到这个符号在哪个lib库里面,但有些时候msdn却并没有对这个函数(符号)的描述(例如unresolved external symbol __security_cookie),这时候我们该怎么办了。一种方法是到网上搜索,看有没有人遇到这个问题。但如果你经常遇到这种问题时(特别是在移植时),你就会产生一个疑问,网上的那些人是怎么找到这些符号所在的库?下面我就提供一种方法来导出所有lib的符号:
LibPaths.list放在bat的当前目录,格式如下(最后面的search代表对其子目录进行搜索,否则就跳过)
winsdk7,"E:/Program Files/Microsoft SDKs/Windows/v7.0/Lib/",search
wincesdk6,"E:/Program Files/Windows Mobile 6 SDK/PocketPC/Lib/Armv4i",skip
directsdk,"E:/Program Files/DirectX_SDK/Lib/",skip
jdk,"E:/java/jdk/jdk1.6.0/lib",skip
ntddk,"F:/NTDDK/",skip
vs2008,"C:/Program Files/Microsoft Visual Studio 9.0",skip
winsdk6,"C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib",skip
winsdk5,"C:/Program Files/Microsoft SDKs/Windows/v5.0/Lib",skip
最后执行命令:“<bat名字> 要找的符号名”就可以查找了。当然你也可以在生成的findSymTemp.txt里面用ue进行查找。
本文介绍了一种通过批处理脚本查找未解决符号所在库的方法。该脚本能够遍历指定路径下的所有.lib文件,并使用dumpbin命令导出库中的所有符号。此方法有助于解决编译过程中遇到的LNK2001错误。
3714

被折叠的 条评论
为什么被折叠?



