error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”
值 | 模式 |
0 | Debug 版本 |
2 | Release 版本 |
- 将 _ITERATOR_DEBUG_LEVEL 设置为 2(debug模式)或 0(release模式)
- 【windows】 将 RuntimeLibrary 设置为 /MDd(debug模式)或 /MD(release模式)。
- 【Linux】将 RuntimeLibrary 设置为 -g(debug模式)或 -O3(release模式)。
如何排查这个错误
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
我做了一个简单的测试,从测试结果可以看出来:
解决办法,因为release模式会被编译器优化,关掉编译器优化即可。
错误2
mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in cmake_pch.obj