报错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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)