链接器错误 LNK2038:在发布模式下检测到不匹配

新手上路,请多包涵

我正在尝试将我的一个小应用程序从 Win XP 和 VS 2005 移植到 Win 7 和 VS 2010。

该应用程序在调试模式下编译并顺利运行,但是在发布模式下我收到以下错误:

 pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj

我应该从哪里开始检查?

原文由 Wartin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 554
2 个回答

您的应用程序正在发布模式下编译,但您链接的是 PCRE 的调试版本,该版本设置了 /MTd(或类似),从而导致 CRT 中的迭代器调试级别不匹配。

在发布模式下重新编译 PCRE 以匹配您自己的应用程序。

VS 2010 中的 detect_mismatch pragma 是导致此错误发出的原因。

请参阅 http://blogs.msdn.com/b/vcblog/archive/2009/06/23/stl-performance.aspx (搜索 _ITERATOR_DEBUG_LEVEL)

原文由 Alex Budovski 发布,翻译遵循 CC BY-SA 2.5 许可协议

这也可能是由于在项目 B 中设置预处理器定义 _HAS_ITERATOR_DEBUGGING=0 而不是在 A 中,其中 A 生成 B 使用的库。

原文由 Art 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题