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:
nerikejte ze nikdo nevi <_<
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...
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
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