Visual Studio C ++ - 链接LIBCMT.lib和LIBCMTD.lib(调试版)

时间:2013-08-07 08:01:26

标签: visual-studio-2008 linker visual-studio-debugging

我想在Visual Studio 2008中编译和链接我的项目作为调试项目(MTd)。这个项目包括几个外部dll,其中一个dll就像非调试版本一样(MD和MT版本)。现在,如果我尝试链接我的项目,它要么重新声明LIBCMT.lib和LIBCMTD.lib中的内容,要么我尝试不允许非调试版本(/ NODEFAULTLIB:LIBCMT),它缺少符号。

现在我可以使用所有外部库的MT版本,但我仍然无法编译和放大将它作为MTd版本链接到调试我的项目,因为相同的错误。

另一种方式(在我看来)是允许重新定义,我认为可能是@ gnu编译器/链接器,但我找不到有关Visual studio的c ++的任何内容。

有关如何处理此问题的任何想法? (请记住:不可能将外部dll编译为debug-dlls)

作为一个额外的一般性问题:是否可以创建一个使用非debug-dll的调试项目?

1 个答案:

答案 0 :(得分:3)

看起来"正确"解决方案是使用相同的参数(MTd)重建所有外部库。正如我所说,这是不可能的。我通过不忽略任何defaultlibs解决了这个问题。相反,我找到了我正在寻找的参数。在链接器选项中 - 我添加的其他行:/FORCE - 忽略了符号的重新定义。这不是一个完美的解决方案,它可能不会对任何项目起作用 - 但它总比没有好......

此外,我必须将增量链接设置为NO,否则embed.manifest不能正确构建(尽管我已经读过这也可能是反vir问题)。