LNK2038 RuntimeLibrary不匹配
程序编译的时候报错
- 错误 LNK2038:检测到“RuntimeLibrary”的不匹配项:值“MD_DynamicRelease”不匹配值“MT_StaticRelease”
- 错误 LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(
*.obj
中)
原因
- 0不匹配2,Debug模式下使用了Release库文件
- 2不匹配0,Release模式下使用了Debug库文件
- 其他字符串一眼就能看出来问题
值
参数 | 类型 |
---|---|
多线程调试Dll (/MDd) | MD_DynamicDebug |
多线程Dll (/MD) | MD_DynamicRelease |
多线程(/MT) | MD_StaticRelease |
多线程(/MTd) | MD_StaticDebug |
解决
VS
如果是数字,在VS工程项目->属性->属性配置->C/C+±>预处理器->预处理定义->添加"_ITERATOR_DEBUG_LEVEL=2"(根据需要添加)
提示是MD_*
之类的在工程上右键->属性->c/c++
->代码生成->运行库 中修改为报错右侧的值,比如说 MD_StaticDebug
Qt
1 |
|
设置完必须清理->qmake->重新构建
命令行参数
在COMMON_COPTIONS选项后面继续添加/Zi /DEBUG /D"_DEBUG" /D"_ITERATOR_DEBUG_LEVEL=2"
- /DEBUG只是是否要生成调试信息的开关。这个命令行选项在链接器页面那里
- /Zi只是生成的调试信息的格式,这个格式是.pdb文件。当然还有好几种格式。这个命令行在编译页那里
- /D"_DEBUG"使用DEBUG模式
LNK2038 RuntimeLibrary不匹配
https://blog.jackeylea.com/cpp/vs-lnk2038-runtime-library-not-match/