为了他人的利益,我虽然会包括我所做的。
由于您无法让 Visual Studio(在我的情况下为 2010)忽略 LNK4204 警告,因此我的方法是给它想要的东西:pdb 文件。由于我使用的是开源库,因此我已经有了构建 pdb 文件的代码。
但是,默认情况下将所有 PDF 文件命名为相同的名称:在我的情况下为 vc100.pdb。由于每个 .lib 都需要一个 .pdb,这会产生问题,尤其是在使用 ImageMagik 之类的东西时,它会创建大约 20 个静态 .lib 文件。您不能在一个目录中拥有 20 个 lib 文件(应用程序的链接器引用这些文件来链接库中的链接)并且将所有 20 个 .pdb 文件称为相同的东西。
我的解决方案是去重建我的静态库文件,并配置 VS2010 以根据项目命名 .pdb 文件。这样,每个 .lib 都会获得一个类似命名的 .pdb,您可以将所有 LIB 和 PDB 放在一个目录中供您的项目使用。
所以对于“调试”配置,我编辑了:
属性 -> 配置属性 -> C/C++ -> 输出文件 -> 程序数据库文件名来自
$(IntDir)vc$(PlatformToolsetVersion).pdb
为以下值:
$(OutDir)vc$(PlatformToolsetVersion)D$(ProjectName).pdb
现在而不是在中间目录的某个地方,.pdb 文件被写入输出目录,.lib 文件也被写入,最重要的是,它们以 D+项目名称的后缀命名。这意味着每个库项目都会生成一个项目 .lib 和一个特定于项目的 .pdb。
我现在可以将我的所有发布 .lib 文件、调试 .lib 文件和调试 .pdb 文件复制到我的开发系统上的一个位置,并且在调试模式下使用该第 3 方库的项目具有 pdb它在调试模式下需要的文件。