her*_*ian 10 c++ compiler-errors
您好我有项目在VC++ 2008年该项目在调试模式下编译没有错误,但是当我尝试建立它在释放模式,我得到以下链接erorr.
1>Linking...
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __heap_alloc already defined in LIBCMT.lib(malloc.obj)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __recalloc already defined in LIBCMT.lib(recalloc.obj)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __msize already defined in LIBCMT.lib(msize.obj)
1>LIBCMTD.lib(malloc.obj) : error LNK2005: _V6_HeapAlloc already defined in LIBCMT.lib(malloc.obj)
1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in LIBCMT.lib(dbghook.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: ___sbh_pHeaderDefer already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __set_amblksiz already defined in LIBCMT.lib(sbheap.obj)
1>LIBCMTD.lib(sbheap.obj) : error LNK2005: __get_amblksiz already defined in LIBCMT.lib(sbheap.obj)......
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?谢谢.
Eri*_*rik 22
您正在混合VS运行时 - 确保项目和链接到的所有库的"项目属性/ C++ /代码生成/运行时库"设置相同.
我遇到了和你一样的问题.这个问题的原因是链接器包含了许多你看不到的库(例如你将包含windows.h,它包括windef.h等等......).而且因为这些文件不是防止书面写的(#ifndef缺失),链接器会尝试#define多次同样的事情 - 问题.
我的解决方案是设置此字段:项目属性 - >链接器 - >输入 - >忽略特定库
到" libcmt.lib "
有了这个,你的链接器也将在发布配置中忽略默认包含的有问题的库,一切都应该工作.. :-)
祝你今天愉快.. :-)
PS如果要避免这些链接器误解,请继续配置项目不在调试或发布配置中,而是在"所有配置"中.此选项位于项目配置的左上角.