VS2013 warning LNK4099:未找到 PDB“vc120.pdb”xxxx 问题解决方案

举例: “warning LNK4099: 未找到 PDB“vc120.pdb”(使用“sqlite3d.lib(sqlite3secure.obj)”或在“D:\test\Debug\vc120.pdb”中寻找);正在链接对象,如同没有调试信息一样”。
使用VC时链接了第三方静态库, 并且第三方静态库(一般是开源的三方库)是在一个solution下的多个project, 当然, 网上基本都是这么回答的, 其实本质原因是因为这些开源库一般都会通过各种方式修改solution和project的默认路径把二进制生成到同一个目录下, 比如lib, 而我们自己平时简单的静态库工程是不怎么修改默认工程配置的.

由于每个开源库的作者有自己的工程组织方式, 但导致LNK4099的最终原因无非是PDB路径问题

解决方案
a. 如果确认不需要PDB, 即不需要调试开源库, 完全可以在设置里将/Zi或/ZI去掉, 这样即能消除warning也能提升开源库编译速度
b. 如果需要调试开源库, 方法也不复杂
b.1. 将开源库project里的C/C++->General->Debug Information Format 设置为Zi或ZI(两者区别请自行google, Zi就够用了, 只是高版本的VS默认都是ZI)
b.2. 然后在C/C++->Output Files->Pragram Database File Name 设置为(OutDir)(TargetName).pdb, (有些2B开源库这里设置的跟VS默认的是一样的比如(IntDir)vc(PlatformToolsetVersion).pdb, 但把IntDir改成了同一个目录, 每个project生成出来的pdb名字路径都是一致的, 当然就会出问题), 这里需要注意的是, 一定要确保(OutDir)(TargetName)是有意义的, 个别开源库完全不用vs自带的宏, 甚至个别开源库需要configure之后才生产vc project, 甚至是绝对路径, 但你所要确保的是, 目录必须跟生成的.lib是同一个, 文件名(不包括扩展名)必须是和生成的xxx.lib的xxx是一致的. 之后你要做的就是把每个project的debug&release都按照如上改好再编译就ok了。

阅读更多

急急急!!!warning LNK4099: 未找到 PDB“vc80.pdb

01-05

[code=c]rn1> 已完成代码的生成rn1>snmp++.lib(address.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(address.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(counter.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(counter.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(ctr64.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(ctr64.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(gauge.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(gauge.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(integer.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(integer.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(octet.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(octet.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(oid.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(oid.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(reentrant.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(reentrant.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(timetick.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(timetick.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1>snmp++.lib(vb.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“snmp++.lib(vb.obj)”或在“F:\Work\MibWalk_GL\MibWalk\Release\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样rn1> MibWalk.vcxproj -> F:\Work\MibWalk_GL\MibWalk\Release\MibWalk.exern1>FinalizeBuildStatus:rn1> 正在删除文件“Release\MibWalk.unsuccessfulbuild”。rn1> 正在对“Release\MibWalk.lastbuildstate”执行 Touch 任务。rn1>rn1>生成成功。rn1>rn1>已用时间 00:00:30.18rn========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========rnrnrn[/code]rn查找没有vc80.pdb文件,但是有vc100.pdb文件rnrelease debug模式运行都会报以下错误:rn[img=http://img.my.csdn.net/uploads/201301/05/1357374440_4186.jpg][/img]rnrn请问该如何修改!!!!非常感谢

没有更多推荐了,返回首页