【发布时间】:2012-01-23 19:26:38
【问题描述】:
我的一个项目仅适用于调试 DLL,而不适用于非调试 DLL。
在调试 DLL 设置下发布项目有哪些注意事项?例如,某些优化是否丢失?
-
如何通过将调试版本设置为非调试DLL来调试这个项目?我已经尝试过这样做,甚至将 _Debug 更改为 NDEBUG,但无论哪种方式,它都会给我同样的错误:
未解析的外部符号 imp_CrtDbgReportW 在函数“public: class std::basic_string,class std::allocator > const & __thiscall std::_Vector_const_iterator,class std::allocator >,class std ::allocator,class std::allocator > > > >::operator*(void)const " (??D?$_Vector_const_iterator@V?$_Vector_val@V?$basic_string@DU?$char_traits@D@std@@ V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@ std@@@std@@QBEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@XZ)
所以我不知道如何调试此项目以解决仅在非调试编译器设置下发生的错误。
【问题讨论】:
-
修复错误。它可能仍然存在于调试版本中,但您还没有看到它的清单。
-
如果用debug编译你的项目,需要链接Debug DLL,否则需要链接release DLL。你不能混搭。另外,请勿自行更改
_DEBUG。 -
@David - 我怀疑这个符号只应该存在于代码的调试版本中。我怀疑发布版本配置错误,因此它试图在仅调试符号中编译...
-
调试 DLL 不可再分发。您不能发布使用它构建的版本。
标签: c++ visual-studio-2010 visual-c++ visual-studio-debugging