CzDC forum

CzDC Czech Forum => Odporne odborna pomoc => Topic started by: TURBO_KrteK on 15 December, 2004, 16:20:52

Title: visual studio vs. jine programy
Post by: TURBO_KrteK on 15 December, 2004, 16:20:52
mam takovy problem, jakmile nastavim visual studio, tak aby v nem slo kompilovat CZDC++ uz mi to nevezme jine projekty :huh:

napr. dam vytvorit win32 console project, tak jak se mi otevre dam kompilovat a vyhodi mi to tyhle chyby
------ Build started: Project: test1, Configuration: Release Win32 ------

Compiling...
stdafx.cpp
Compiling...
test1.cpp
Linking...
LIBCMT.lib(osfinfo.obj) : error LNK2005: __set_osfhnd already defined in LIBC.lib(osfinfo.obj)
LIBCMT.lib(osfinfo.obj) : error LNK2005: __free_osfhnd already defined in LIBC.lib(osfinfo.obj)
LIBCMT.lib(osfinfo.obj) : error LNK2005: __get_osfhandle already defined in LIBC.lib(osfinfo.obj)
LIBCMT.lib(osfinfo.obj) : error LNK2005: __alloc_osfhnd already defined in LIBC.lib(osfinfo.obj)
LIBCMT.lib(osfinfo.obj) : error LNK2005: __open_osfhandle already defined in LIBC.lib(osfinfo.obj)
LIBCMT.lib(dosmap.obj) : error LNK2005: __dosmaperr already defined in LIBC.lib(dosmap.obj)
LIBCMT.lib(setlocal.obj) : error LNK2005: ___init_dummy already defined in LIBC.lib(setlocal.obj)
LIBCMT.lib(setlocal.obj) : error LNK2005: __strcats already defined in LIBC.lib(setlocal.obj)
LIBCMT.lib(setlocal.obj) : error LNK2005: ___lc_strtolc already defined in LIBC.lib(setlocal.obj)
LIBCMT.lib(setlocal.obj) : error LNK2005: ___lc_lctostr already defined in LIBC.lib(setlocal.obj)
LIBCMT.lib(setlocal.obj) : error LNK2005: __expandlocale already defined in LIBC.lib(setlocal.obj)
LIBCMT.lib(setlocal.obj) : error LNK2005: _setlocale already defined in LIBC.lib(setlocal.obj)
LIBCMT.lib(mbctype.obj) : error LNK2005: __getmbcp already defined in LIBC.lib(mbctype.obj)
LIBCMT.lib(mbctype.obj) : error LNK2005: __setmbcp already defined in LIBC.lib(mbctype.obj)
LIBCMT.lib(mbctype.obj) : error LNK2005: ___initmbctable already defined in LIBC.lib(mbctype.obj)
LIBCMT.lib(initctyp.obj) : error LNK2005: ___init_ctype already defined in LIBC.lib(initctyp.obj)
LIBCMT.lib(initctyp.obj) : error LNK2005: ____mb_cur_max_func already defined in LIBC.lib(initctyp.obj)
LIBCMT.lib(initctyp.obj) : error LNK2005: ____lc_codepage_func already defined in LIBC.lib(initctyp.obj)
LIBCMT.lib(initctyp.obj) : error LNK2005: ____lc_collate_cp_func already defined in LIBC.lib(initctyp.obj)
LIBCMT.lib(initctyp.obj) : error LNK2005: ____lc_handle_func already defined in LIBC.lib(initctyp.obj)
LIBCMT.lib(initnum.obj) : error LNK2005: ___free_lconv_num already defined in LIBC.lib(initnum.obj)
LIBCMT.lib(initnum.obj) : error LNK2005: ___init_numeric already defined in LIBC.lib(initnum.obj)
LIBCMT.lib(initmon.obj) : error LNK2005: ___free_lconv_mon already defined in LIBC.lib(initmon.obj)
LIBCMT.lib(initmon.obj) : error LNK2005: ___init_monetary already defined in LIBC.lib(initmon.obj)
LIBCMT.lib(initmon.obj) : error LNK2005: ___lconv_intl already defined in LIBC.lib(initmon.obj)
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
Release/test1.exe : fatal error LNK1169: one or more multiply defined symbols found


pokud ovsem otevru nejaky projekt, ktery sem vytvoril pred nastavenim visual studia, tak se zadny problem pri kompilovani nevyskytne  :(  netusi nekdo kde je chyba ?  :unsure:
Title: visual studio vs. jine programy
Post by: TURBO_KrteK on 21 December, 2004, 20:11:54
nerikejte ze nikdo nevi  <_<  
Title: visual studio vs. jine programy
Post by: [CZ]Q:E:E on 21 December, 2004, 20:42:56
No vypada to, ze tam mas dva stejny soubory, jeden se jmenuje LIBCMT.lib a druhej LIBC.lib, ktery navzajem kolidujou... zkus ty soubory dohledat a jeden z nich umazat nebo se ho pokusit nejak odebrat z include...
Title: visual studio vs. jine programy
Post by: TURBO_KrteK on 22 December, 2004, 12:48:08
QuoteNo vypada to, ze tam mas dva stejny soubory, jeden se jmenuje LIBCMT.lib a druhej LIBC.lib, ktery navzajem kolidujou... zkus ty soubory dohledat a jeden z nich umazat nebo se ho pokusit nejak odebrat z include...
dik, kouknu na to
Title: visual studio vs. jine programy
Post by: Petrjr on 23 December, 2004, 03:36:23
Mam zkusenost s Borlandem, ale toto bude stejne: xxxMT.lib obvykle znaci multithread obdobu xxx.lib. Multithread == vice vlaken == paralelni procesy v ramci jednoho programu.

Pro spravne nastaveni "prekladu" (zde uz nejde o preklad ale o nasledne linkovani) se musi pouzit (prilinkovat) pouze jeden z typu knihovny, vybrany dle toho zda ma cilovy program pracovat ve vice threadech nebo jen v jednom. DCko bych odhadoval ze pouziva vice threadu (napr. hashovani share odhaduji na samostatny thread)  takze pouzij xxxMT variantu.

To, ktera knihovna je pouzita, se urcuje "make" souborem. V pripade Visual Studia odhaduji ze to nebude make soubor ale nejake nastaveni v projektu. Tam bys mel mit (v link options) uvedenou jen jednu z variant, pripadne hledej povoleni/zakazani multithread nebo MT nebo _MT_ ci neco podobneho.

Odebirat z include nejde - neni co - include s tim nema nic spolecneho. Include je zpracovavano v dobe prekladu a pouze deklaruje vlastni a knihovni funce, promenne, makra a pod. Preklad probehne a az pak se davaji dohromady vlastni prelozene funkce s knihovnimi - tomu se rika linkovani - a az v teto chvili nastava rozpor, protoze existuji dve knihovny se stejnym i funkcemi (jedna pro multithread programy / druha pro single thread) a zde je v projektu chybne urceno, ze se maji pouzit knihovny obe. Coz nelze.

Petr