我想在Visual Studio2008中将我的项目编译并链接为调试项目(MTd)。该项目包括几个外部dll,其中一个dll是可用的非调试版本(MD和MT版本)。现在,如果我尝试链接我的项目,它要么显示在LIBCMT.lib和LIBCMTD.lib中重新声明内容,要么我尝试不允许非调试版本(/NODEFAULTLIB:LIBCMT),它缺少符号。
现在我可以使用所有外部库的MT版本,但由于相同的错误,我仍然无法将其编译并链接为MTd版本来调试我的项目。
另一种方法(在我看来)是允许重新定义,我认为@ gnu编译器/链接器是可能的,但我在visual studio的c++中找不到任何关于这方面的东西。
对如何处理这个问题有什么想法吗?(请记住:无法将外部dll编译为debug-dll)
作为一个额外的一般性问题:是否有可能创建一个使用非调试dll的调试项目?
发布于 2013-08-07 16:39:35
看起来“正确”的解决方案应该是用相同的参数(MTd)重建所有的外部库。正如我所说的,这是不可能的。我通过不忽略任何defaultlib解决了这个问题。相反,我找到了我要找的参数。在链接器选项中-我添加了额外的行:/FORCE -这忽略了符号的重新定义。这不是一个完美的解决方案,可能对任何项目都不起作用--但这仍然比没有好……
此外,我还必须将Incremental Link设置为NO,否则embed.manifest将无法正确构建(尽管我已经了解到这也可能是一个反病毒问题)。
https://stackoverflow.com/questions/18097839
复制相似问题