MSVC 2005 ругань на стандартные функции при стыковке с либой
От: krokodil955  
Дата: 21.12.08 15:16
Оценка:
Всем здрям!
При линковке приложения с либой выпадают вот такие ошибки:
Linking...
LINK : E:\Documents and Settings\user\My Documents\Visual Studio 2005\Projects\comp_wo_lib_ex\Debug\comp_wo_libs_ex.exe not found or not built by the last incremental link; performing full link
LIBCMTD.lib(dosmap.obj) : error LNK2005: __dosmaperr already defined in libpgport.lib(win32error.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _getenv already defined in LIBCMTD.lib(getenv.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _strncpy already defined in LIBCMTD.lib(strncpy.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _isalpha already defined in LIBCMTD.lib(_ctype.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: ___iob_func already defined in LIBCMTD.lib(_file.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _strerror already defined in LIBCMTD.lib(strerror.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __errno already defined in LIBCMTD.lib(dosmap.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _strchr already defined in LIBCMTD.lib(strchr.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __pclose already defined in LIBCMTD.lib(popen.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _setlocale already defined in LIBCMTD.lib(setlocal.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _strstr already defined in LIBCMTD.lib(strstr.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _strncmp already defined in LIBCMTD.lib(strncmp.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _exit already defined in LIBCMTD.lib(crt0dat.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _fwrite already defined in LIBCMTD.lib(fwrite.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _sprintf already defined in LIBCMTD.lib(sprintf.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _memmove already defined in LIBCMTD.lib(memmove.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _malloc already defined in LIBCMTD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _realloc already defined in LIBCMTD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _free already defined in LIBCMTD.lib(dbgheap.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __stat32 already defined in LIBCMTD.lib(stat.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _tolower already defined in LIBCMTD.lib(tolower.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _isupper already defined in LIBCMTD.lib(_ctype.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _toupper already defined in LIBCMTD.lib(toupper.obj)
MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: _islower already defined in LIBCMTD.lib(_ctype.obj)
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
E:\Documents and Settings\user\My Documents\Visual Studio 2005\Projects\comp_wo_lib_ex\Debug\comp_wo_libs_ex.exe : fatal error LNK1169: one or more multiply defined symbols found
Build log was saved at "file://e:\Documents and Settings\user\My Documents\Visual Studio 2005\Projects\comp_wo_lib_ex\comp_wo_libs\Debug\BuildLog.htm"
comp_wo_libs_ex - 27 error(s), 70 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Когда выставляю Ignore specific library: LIBCMTD, то вроде все нормально, но exe файл становится в 10 раз меньше и на другой машине (где нет студии) запускать не могу, пишет что недопустимое Win32 приложение. Понимаю что это нестатическая компиляция — есть зависимость от длл. А нужно обязательно чтоб на другом компе запускать можно было.
Подскажите плз что тут можно сделать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.