您的位置:首页 > 其它

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

2017-04-10 09:55 337 查看

报错1:

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

解决:

(1)工程的模式和库的模式不一致,工程为Debug模式,引用了Release模式下生成的库。

将当前的Debug模式改为Release模式。

(2)库的编译选项和工程的编译选项不同。

在【解决方案资源管理器】界面上,选择【项目】,【属性】,【C/C++】【代码生成】,在【运行库】中选择“多线程(/MT)”

报错2:

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

解决:

与“报错1”相反的情况,工程为Release模式,引用了Debug模式下生成的库。将当前的Release模式改为Debug模式。同时检查【运行库】。


注意:

(1)MFC的使用,有三种设置:

 1.使用标准Windows库

 2.在静态库中使用MFC:是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上运行;

 3.在共享DLL中使用MFC:指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件;

(2)多线程调试:

多线程(/MT): 在exe里使用多线程,创建exe,用于Release版本。

多线程调试(/MTd):同/MT一样,用于Debug版本。
多线程DLL(/MD):在dll中使用多线程,创建动态链接库,用于Release版本。

多线程调试DLL(/MDd):同/MD一样,用于Debug版本。

(3)模式匹配:

如果是Debug的“在静态库中使用MFC”,不要使用MDd,改用MTd,然后编译即可通过。

如果是Debug的“在共享DLL中使用MFC”,注意不要使用MTd,改用MDd;

如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT;

如果是Release版本的“在共享DLL中使用MFC”,不要使用MT,使用MD。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐