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

转载 2017年04月11日 14:36:31

举例: “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“vc120.pdb”

warning LNK4099: 未找到 PDB“vc120.pdb”的解决方法
  • yannantian198656
  • yannantian198656
  • 2015-11-26 21:46:30
  • 8440

warning LNK4099: PDB 原因及解决方案

0x00 现象及原因 举例: warning LNK4099: PDB 'wxbase30ud.pdb' was not found with 'wxbase30ud.lib(any.obj)' ...
  • fqucuo
  • fqucuo
  • 2015-10-17 10:54:46
  • 2042

怎样解决warning LNK4099: 未找到 PDB“vc100.pdb” 造成的链接 时间过长

转自 http://blog.csdn.net/vchelpdoc/article/details/12873161 错误原因: 人为删除了vc100.pdb文件.一般这个文件生成在debug下...
  • korekara88730
  • korekara88730
  • 2017-07-19 11:56:22
  • 1215

解决 Debug编译时,警告:warning LNK4099: 未找到 PDB“vc90.pdb”

修改库文件编译选项为默认即可, 目标程序的与库设置为一样, 单多个Project是分开编译的,主项目和子项目的pdb文件名不相同(默认都是vc90.pdb或vc100.pdb)从而造成找不到调试信息....
  • hsc456
  • hsc456
  • 2013-06-03 11:49:47
  • 6557

解决 Cocos2d-x 3.2 error C1041: 无法打开程序数据库vc120.pdb

Cocos2d-x 3.2最高支持的VS版本为2012,我在VS2013上编译新建立的项目遇到错误: 错误 1 error C1041: 无法打开程序数据库“x:\cocos2d-x-3.2...
  • u012556077
  • u012556077
  • 2015-12-20 14:47:37
  • 3646

Visual C++ Tips: 忽略 LNK4099 警告

问题静态库的 .pdb 文件缺失,导致 LNK4099 警告: sqlite3.lib(sqlite3.obj) : warning LNK4099: PDB ‘SQLite_StaticLib....
  • XinYaping
  • XinYaping
  • 2015-12-08 16:26:20
  • 2576

去掉 VC2017里输出:warning LNK4099

当你使用一些库,但没有必要调试它时,总会输出一些烦人的信息,如下:>libhpdfD.lib(hpdf_annotation.obj) : warning LNK4099: 未找到 PD...
  • caimouse
  • caimouse
  • 2018-03-08 17:52:50
  • 408

warning LNK4099: PDB '*.pdb' was not found

在使用第三方库,或者其他工程的库时,如果mei'y
  • wahhl
  • wahhl
  • 2014-07-03 19:59:58
  • 2672

warning LNK4099: 未找到 PDB“vc80.pdb

环境:VS2005 参考网址:(1) : http://www.cppblog.com/huyutian/archive/2012/10/06/192930.html               ...
  • sweet_life
  • sweet_life
  • 2013-08-09 12:01:19
  • 5413

怎样解决warning LNK4099: 未找到 PDB“vc100.pdb”

错误原因: 人为删除了vc100.pdb文件.一般这个文件生成在debug下 解决办法: 方法1:禁用警告4099,或禁用调试信息(在属性->链接器->调试->生成调试信息) 方法2:保留pdb文件(...
  • u012343693
  • u012343693
  • 2013-10-19 18:40:25
  • 6694
收藏助手
不良信息举报
您举报文章:VS2013 warning LNK4099:未找到 PDB“vc120.pdb”xxxx 问题解决方案
举报原因:
原因补充:

(最多只允许输入30个字)