14

.LIB在 MS Visual Studio 10 中使用调试信息构建静态库 ( ) 时,.PDB始终命名为vc100.pdb.
(而不是构建.DLL调试信息所在的[MyProjectName].pdb

这对我来说是个问题,因为我试图将几个不同的库(及其调试符号)复制到 的目录中"PublishedLibraries",但所有vc100.pdb名称显然都会发生冲突。

我确定我可以更改每个名称.PDB以匹配其名称.LIB,但对我来说,更大的问题是为什么Visual Studio 认为vc100.pdb这个名称比projectA.pdb??
如果所有名称都冲突,我们打算如何使用来自多个库的调试信息?

4

1 回答 1

21

如果您使用 /Z7(而不是 /ZI 或 /Zi)[在 UI C/C++ -> 常规 -> 调试信息格式中],则调试信息嵌入在 lib 文件本身中,而不是单独的 pdb,这意味着您不必担心同名。

当您构建最终的可执行文件(.exe 或 .dll)时,您将从所有小型嵌入式 pdb 中获得合并的 pdb。

有关更多信息,请参阅此问题

这是我一直在团队中处理此问题的方式,因为在构建过程中您不会丢失调试信息。它使库有些膨胀[但总共不超过同时拥有 lib 和 pdb],但是由于您可能不发布库,因此您不必为此担心太多。

于 2013-06-11T20:12:41.843 回答