检测到"_ITERATOR_DEBUG_LEVEL"的不匹配项

error:
vtkCommon.lib(vtkSmartPointerBase.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”(cloudviewer.obj 中)
1>vtkCommon.lib(vtkGarbageCollector.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(cloudviewer.obj 中)
1>vtkCommon.lib(vtkDebugLeaksManager.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(cloudviewer.obj 中)
 
错误原因是:Debug使用了Release的库文件。
即使你连接库里面两个都添加着呢,但是release库文件放在了debug前面,也是出错的。默认按顺序使用库文件。
 
类似错误:如release下使用了Debug的库文件,报错类似:
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”.
 
小问题花大时间!哎
 
值“2”不匹配值“0”.解决办法:

详细考证后,发现这一选项vs提供了设定。即只需要在预处理定义中设定其值符合要调用的程序设定即可。vs2010中,debug模式下默认值为2,release的模式的默认值为0 。其设定方法如下:

项目-〉属性-〉配置属性-〉C/C++ -〉预处理器-〉预处理定义 -〉添加“_ITERATOR_DEBUG_LEVEL=0”即可。

posted on 2015-11-16 09:45  lpx15312  阅读(10193)  评论(0编辑  收藏  举报

导航