弹出以下错误列表。 如果发生在Release版本上,我很好。
令人惊讶的是它发生在DEBUG构建中。
1> libcmtd.lib(dbgheap.obj):错误LNK2005:已在libcmt.lib(malloc.obj)中定义malloc
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_heap_alloc已在libcmt.lib(malloc.obj)中定义
1> libcmtd.lib(dbgheap.obj):错误LNK2005:已在libcmt.lib中定义的calloc(calloc.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:已在libcmt.lib中定义的realloc(realloc.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_recalloc已在libcmt.lib中定义(realloc.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_expand已在libcmt.lib中定义(expand.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:已在libcmt.lib(free.obj)中定义了free 1> libcmtd.lib(dbgheap.obj):错误LNK2005:_msize已在libcmt.lib中定义(msize.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_malloc已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_realloc已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_recalloc已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_offset_malloc已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_offset_realloc已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_offset_recalloc已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_free已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbgheap.obj):错误LNK2005:_aligned_msize已在libcmt.lib中定义(align.obj)
1> libcmtd.lib(dbghook.obj):错误LNK2005:__crt_debugger_hook已经在libcmt.lib(dbghook.obj)中定义了
1> libcmtd.lib(isctype.obj):错误LNK2005:_isctype_l已在libcmt.lib中定义(isctype.obj)
1> libcmtd.lib(isctype.obj):错误LNK2005:_isctype已在libcmt.lib中定义(isctype.obj)
答案 0 :(得分:3)
看起来您正在链接到Debug运行时以及Release运行时 - 可能您有一个Release构建,它静态链接到Debug lib,反之亦然。
答案 1 :(得分:1)
LIB
或DLL
,则其中任何一个都与运行时程序集静态链接。这就是造成这种链接错误的原因。静态喜欢的运行时程序集不是推荐的方法
但如果您需要摆脱此链接错误,请转到right-click on project file in project explorer
- > properties
- > configuration properties
- > linker
- > Input
- > Ignore Specific Library
- >添加libcmtd.lib