本文主要是介绍【报错】error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
错误描述
在使用vs2017的PCL库时,一直在正常使用Release模式,Release比Debug的速度快很多。在用到PCL可视化点云时,调用vtk模式出现了报错:
vtkCommonColor-8.0-gd.lib(vtkColorSeries.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”
vtkCommonColor-8.0-gd.lib(vtkColorSeries.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”
原因
值“2”不匹配值“0”,Release使用了Debug下的库文件。
值“0”不匹配值“2”,Debug使用了Release下的库文件。
解决方案
项目->属性->配置属性->链接器->输入->附加依赖项->编辑
检查是否存在误用Debug的库文件。
注意:如果继承了父级中的Debug库文件也会导致报错。(取消勾选“从父级…继承”)
ps.两类库文件简单的辨别方法:后面有加d的是debug库文件,没有加d的是release库文件。
例:opencv_aruco410d.lib(debug)、opencv_aruco410.lib(release)
无效解决方法
在VS2017中,以下方法无效:
VS2010中,Debug模式下默认值为2,Release模式下默认值为0。
在项目->属性->配置属性->C/C+±>预处理器->预处理定义中添加“_ITERATOR_DEBUG_LEVEL=0"或“_ITERATOR_DEBUG_LEVEL=2"。
这篇关于【报错】error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!