在Visual Studio中包含带有库管理程序的.pdb文件

JBe*_*ley 8 c++ debugging visual-studio libraries

我有一个项目,其输出是一个库(.lib).该项目依赖于第三方库(也是.lib).为了避免构建在我的库之上的项目不得不担心这个第三方依赖,我使用了库管理器将它包含在我的(Project Properties> Librarian> General> Additional Dependencies)中.

但是,当我构建一个链接到我的库的单独的可执行项目时,我得到了一堆警告:

MyProject.lib(someThirdPartyObjectFile.obj):警告LNK4099:在'MyProject.lib(someThirdPartyObjectFile.obj)'或'\ vc110.pdb'中找不到PDB'vc110.pdb'; 链接对象就像没有调试信息一样

这意味着(我假设)我将能够调试属于我的库的任何代码,但不能调试第三方库.

如何指示Visual Studio还包含我的第三方库PDB的内容?

Syn*_*xis 6

静态库可能已被移动,因此编译器无法从中找到符号.你有几个选择:

  • 更改调试格式/Z7,其嵌入代码的调试信息(而/Zi/ZI把它放在一个单独的文件).
  • 更改pdb文件的输出配置(对于VS2005 Settings > C++ > Output Files > Program Database File Name,可能在VS2010中类似).

您可以在此处此处找到更多信息.

  • 谢谢,我重新审视了这个问题,并从你的答案中解决了问题所在.默认情况下,Visual Studio将PDB文件放在Intermediate文件夹而不是Output文件夹中,因此在我链接到它时无法找到我的第三方库的PDB.将您提到的`$(IntDir)vc $(PlatformToolsetVersion).pdb`中的设置更改为`$(OutDir)vc $(PlatformToolsetVersion).pdb`可确保将PDB放在与.lib输出相同的文件夹中.我不知道为什么Visual Studio不默认这一点,因为将PDB放在中间文件夹对我来说没有任何意义. (3认同)