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了。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: fatal error lnk1104: 无法打开文件"libc.lib" 是指在编译或链接时,编译器或连接器无法找到"libc.lib" 这个文件。 这个错误通常是由于以下几个原因引起的: 1. 文件不存在:编译器或连接器无法找到指定的"libc.lib" 文件。这可能是因为文件被误删除或移动到其他位置,或者您没有安装相应的库文件。 解决方法:确保"libc.lib" 文件存在于正确的位置,或者重新安装相应的库文件。 2. 路径错误:编译器或连接器无法找到"libc.lib" 文件的路径。编译器或连接器会按照默认路径进行查找,如果文件不在默认路径中,就会出现这个错误。 解决方法:检查文件的路径是否设置正确,并确保编译器或连接器能够找到该文件。可以使用编译器或连接器的选项设置路径。 3. 权限问题:编译器或连接器没有足够的权限读取或写入"libc.lib" 文件。 解决方法:以管理员身份运行编译器或连接器,或修改文件的权限,使其可被编译器或连接器访问。 总之,如果遇到"fatal error lnk1104: 无法打开文件"libc.lib"" 的错误提示,需要首先检查该文件是否存在、路径是否正确并且是否具有足够的权限。如果仍然无法解决问题,可以尝试重新安装相应的库文件或寻求专业人士的帮助。 ### 回答2: fatal error lnk1104: 无法打开文件“libc.lib” 是一个常见的错误信息,它意味着在链接过程中无法找到所需的 "libc.lib" 库文件。 这个错误通常是由于以下几个原因引起的: 1. 文件路径错误:编译器在链接过程中需要找到 "libc.lib" 文件,但是由于文件路径设置有误,编译器无法定位到文件。解决方法是检查文件路径设置是否正确,并确保文件存在于指定路径下。 2. 缺少库文件:在某些情况下,你可能没有安装所需的 "libc.lib" 库文件。解决方法是根据你正在使用的编译器和开发工具集,安装相应的库文件。 3. 冲突的库文件:如果你的项目同时引用了多个库文件,并且其中一个库文件与 "libc.lib" 冲突,就可能出现该错误。解决方法是检查项目的库文件依赖关系,并确保没有冲突。 4. 编译器设置错误:在某些情况下,编译器设置可能会导致链接错误。解决方法是检查编译器设置,确保正确配置。 总结来说,解决 "fatal error lnk1104: 无法打开文件“libc.lib”" 的方法通常是检查文件路径设置、安装所需的库文件、处理冲突的库文件以及检查编译器设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值