Когда я использую флаг /MT с ICC 14, я получаю следующие ошибки:
1> xilink: executing 'link'
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: isspace already defined in LIBCMT.lib(_ctype.obj)
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: __iob_func already defined in LIBCMT.lib(_file.obj)
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: fprintf already defined in LIBCMT.lib(fprintf.obj)
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: abort already defined in LIBCMT.lib(abort.obj)
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: free already defined in LIBCMT.lib(free.obj)
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: malloc already defined in LIBCMT.lib(malloc.obj)
1>MSVCRT.lib(MSVCR120.dll) : error LNK2005: realloc already defined in LIBCMT.lib(realloc.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __cdecl type_info::type_info(class type_info const &)" (??0type_info@@AEAA@AEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __cdecl type_info::operator=(class type_info const &)" (??4type_info@@AEAAAEAV0@AEBV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>D:\forgottenserver-master\vc12\x64\Release\theforgottenserver.exe : fatal error LNK1169: one or more multiply defined symbols found
Я понятия не имею, что вызывает это, и когда я использую флаг /MD, все работает нормально.
Я использую ICC версии 14 с MSVC 2013 Ultimate и компилирую программу для x64 с повышением (я сам скомпилировал эти файлы для платформы iw, и они работают)
use /nodefaultlib:MSVCRT
? - person Jonas Bötel   schedule 29.06.2014/nodefaultlib:msvcrt
. Если вы получаете описанные вами ошибки, это означает, что некоторые объекты в вашем компоновщике были скомпилированы с помощью/MT
, а другие — с/MD
. Вы не можете смешивать и сочетать; все исходные файлы должны быть скомпилированы с одной и той же опцией. - person James McNellis   schedule 29.06.2014