链接错误LNK2038:不匹配在Release模式检测
-
27-09-2019 - |
题
我想从港口的Win XP和VS 2005我的一个小的应用程序来运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
我应该从哪里开始检查?
解决方案
您的应用程序被编译在发布模式,但你链接到的PCRE的调试版本,其中有/ MTD(或类似)的设置,从而导致迭代器在CRT调试水平的不匹配。
重新编译PCRE在释放模式,以适应自己的应用程序。
在 detect_mismatch
编译在VS 2010是什么原因导致这种错误发射。
请参阅 HTTP://blogs.msdn的.com / b / vcblog /存档/ 2009/06/23 / STL-performance.aspx (搜索_ITERATOR_DEBUG_LEVEL)
其他提示
我有同样的错误。在我的情况的解决方案很简单:我有一个项目A,取决于另一个项目B. B在调试模式中的预处理定义_DEBUG和A没有
。只需添加_DEBUG项目A(项目 - >属性 - > C ++ - > preprocessor->预处理器定义),你就大功告成了。
使用我的问题是相关的项目“使用多字节字符集”结果 徐振祥下 - >字符集。而其他项目没有“设置”值
这也可以通过在项目B和未在A,其中A产生由B中使用一个lib设置预处理器定义_HAS_ITERATOR_DEBUGGING=0
引起的。
不隶属于 StackOverflow