[√]_ITERATOR_DEBUG_LEVEL

488 阅读1分钟

遇到这个问题是我在接入vld源码编译release的时候遇到的,简直坑死了。

error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”

模式
0Debug 版本
2Release 版本
  • 将 _ITERATOR_DEBUG_LEVEL 设置为 2(debug模式)或 0(release模式)
  • 【windows】 将 RuntimeLibrary 设置为 /MDd(debug模式)或 /MD(release模式)。
  • 【Linux】将 RuntimeLibrary 设置为 -g(debug模式)或 -O3(release模式)。

image.png

如何排查这个错误

LNK2038	mismatch detected for 'RuntimeLibrary': 
value 'MT\_StaticRelease'  文件对应的,依赖的lib
doesn't match 
value 'MTd\_StaticDebug' 项目对应的,当前的lib,一般都要和文件的对应
in cmake\_pch.obj	
项目:vld (vld\vld)	
文件:H:\proj\tank5\client\frameworks\qt-editor\build\cppformat.lib(format.obj)	1
  • MD:Dynamic
  • MT:Static

我做了一个简单的测试,从测试结果可以看出来:

image.png

解决办法,因为release模式会被编译器优化,关掉编译器优化即可。

错误2

mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in cmake_pch.obj