报错如下:
libboost_thread-vc110-mt-1_53.lib(thread.obj) : error LNK2038....
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(the_main.obj 中)
原因:
debug使用了release文件
因为thread在编译中一共出现了
libboost_thread-vc110-mt-1_53.lib
libboost_thread-vc110-mt-gd-1_53.lib
libboost_thread-vc110-mt-s-1_53.lib
libboost_thread-vc110-mt-sgd-1_53.lib
这4个lib
mt:表示多线程,d:表示debug,s:标识static
指定与你项目连接的运行期库
/MT多线程应用程序
/Mtd多线程应用程序(DEBUG)
/MD多线程DLL
/MDd多线程DLL(DEBUG)
如果你在项目中是这样添加:项目属性---链接器---输入---附加依赖项中:D:\developSoftware\boost1\boost_1_53_0\stage\lib\*.lib
那么即使你的连接库中都含有debug和relase版本的库,但是release版本的顺序放在了debug前面,就会出现上述原因
解决方法:
在项目属性---链接器---输入---附加依赖项中添加下面的。
D:\developSoftware\boost1\boost_1_53_0\stage\lib\*mt-gd*.lib
或者编译的时候你不在:项目属性---链接器---输入---附加依赖项中添加任何.lib路径,而是根据程序每次提示需要什么.lib然后加入到附加依赖项中就行了