我想从港口的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引起的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top