我正在尝试将我的一个小应用程序从 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 许可协议
您的应用程序正在发布模式下编译,但您链接的是 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)