» »

[C++] Linker errorji

[C++] Linker errorji

Mezetix ::

Pozdravljeni.
Uporablam VC++ 2008 in vem nekaj osnov programiranja, se pravi približno vem kam kaj paše.

Mam en problem z linkanjem fajlov že ene 2 mesca. Sm že dvakrat napisal celo zadevo (cca 10 file-ov .h in .cpp) pa mi več ali manj zmeri vrže linker errorje vn. (verjetno zato, ker dost uporabljam copy-paste :) )

Kolikor sm se prbijal skozi helpe u MSDN so usi ti warningi pa en error zaradi napačnega definiranja oz. deklarirana imen/funkcij. Pnavadi gre vse skozi, dokler ne začnem uporablat #include < list > in potem v liste dajem svoje class-e, kateri so "podedovani" iz drugih class-ov.

V spodnjem primeru naprimer mi javi napako v class-u ParamLoader, kateri v bistvu samo nalaga podatke iz txt datoteke v int ali float-e in jih potem posreduje nazaj. Je pa podedovan iz iniFileLoaderBase classa.
Moram še napisat, da je večino kode zmetane skupaj z vseh vetrov in vmes z mojimi popravki, tako da se čudim, da se sploh compaila.

Zanima me, kje naj se sploh lotim reševanja težave. Je to v .h fajlu pri deklariranju (bi moglo bit kej extern?(čeprav se vse uporablja lokalno, znotraj fajla)) ali je težava v drugih spremenljivkah, ki jih potem posredujem Paramloaderju? Ker zadeva bi sama po sebi morala delovat.

Spodaj prilagam celo klobaso ki mi jo VC vrže ven. Mislim da je težava samo v zadnji vrstici. Čeprav so ti warningi verjetno tam iz podobnega razloga. Na živce mi gre to, ker ne vem, kje naj se sploh lotim zadeve reševat.
 in [ /st.koda c]
1>Linking...
1>d3dUtility.obj : warning LNK4217: locally defined symbol _rand imported in function "float __cdecl d3d::GetRandomFloat(float,float)" (?GetRandomFloat@d3d@@YAMMM@Z)
1>SteeringBehaviors.obj : warning LNK4049: locally defined symbol _rand imported
1>Main.obj : warning LNK4217: locally defined symbol ??1exception@std@@UAE@XZ (public: virtual __thiscall std::exception::~exception(void)) imported in function __unwindfunclet$??0runtime_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z$0
1>ParamLoader.obj : warning LNK4049: locally defined symbol ??1exception@std@@UAE@XZ (public: virtual __thiscall std::exception::~exception(void)) imported
1>SteeringBehaviors.obj : warning LNK4217: locally defined symbol ??1exception@std@@UAE@XZ (public: virtual __thiscall std::exception::~exception(void)) imported in function "float __cdecl RandFloat(void)" (?RandFloat@@YAMXZ)
1>Main.obj : warning LNK4217: locally defined symbol ??0exception@std@@QAE@XZ (public: __thiscall std::exception::exception(void)) imported in function "public: __thiscall std::runtime_error::runtime_error(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0runtime_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z)
1>ParamLoader.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@XZ (public: __thiscall std::exception::exception(void)) imported
1>SteeringBehaviors.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@XZ (public: __thiscall std::exception::exception(void)) imported
1>Main.obj : warning LNK4217: locally defined symbol ??0exception@std@@QAE@ABV01@@Z (public: __thiscall std::exception::exception(class std::exception const &)) imported in function "public: __thiscall std::runtime_error::runtime_error(class std::runtime_error const &)" (??0runtime_error@std@@QAE@ABV01@@Z)
1>ParamLoader.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@ABV01@@Z (public: __thiscall std::exception::exception(class std::exception const &)) imported
1>SteeringBehaviors.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@ABV01@@Z (public: __thiscall std::exception::exception(class std::exception const &)) imported
1>ParamLoader.obj : warning LNK4217: locally defined symbol _atoi imported in function "public: int __thiscall iniFileLoaderBase::GetNextParameterInt(void)" (?GetNextParameterInt@iniFileLoaderBase@@QAEHXZ)
1>SteeringBehaviors.obj : warning LNK4217: locally defined symbol ??0exception@std@@QAE@ABQBD@Z (public: __thiscall std::exception::exception(char const * const &)) imported in function "public: __thiscall std::bad_alloc::bad_alloc(char const *)" (??0bad_alloc@std@@QAE@PBD@Z)
1>ParamLoader.obj : error LNK2019: unresolved external symbol __imp__atof referenced in function "public: float __thiscall iniFileLoaderBase::GetNextParameterFloat(void)" (?GetNextParameterFloat@iniFileLoaderBase@@QAEMXZ)
1>D:\programming stuff\Uni1\Debug\Uni1.exe : fatal error LNK1120: 1 unresolved externals

noraguta ::

ja težava je error , neki ti ne štima z standardnimi knjižnicami. ker msvcrt se ti pa linka v aplikacijo?
Pust' ot pobyedy k pobyedye vyedyot!

Mezetix ::

mam naložene d3d9.lib d3dx9.lib winmm.lib dodatno za directX in iz prejšnga sampla sm prepisal da linker ignorira MSVCRTD.lib. Tu pod property-linker-Ignore specific libary. Če pustim MSVCRT mi pa vrže ene 24 errorjev
1>libcmt.lib(_fpinit_.obj) : error LNK2005: __ldused already defined in a previous module

noraguta ::

hmm , če imaš vse skupaj nametano probaj za začetek naredit svež projekt , pa dodaj source notri. zgleda kot, da se ti dve verziji libc-ja vežeta na projekt.
Pust' ot pobyedy k pobyedye vyedyot!

Mezetix ::

Mislem da je ravno v tem MSVCRTD.lib težava. Če compajlam en del (directx) posebi se lepo linka in če kompajlam druh del (logika)posebi projekt se mi glih tko lepo linka. Tko da zdej nism prepričan od kje sm pobral tist MSVCRTD.lib ignore.

Sm ugotovu da mam linkane neke hederje, k uporablajo extern "C" comando. Ce vržem to vn iz projekta, pol mi linka star in sam ena malenkost ne dela. Jo bom že usposobu. Zdej morem še enkrat use skup popravt da bo delal z MSVCRTD pa probat.

Hvala za pomoč.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] github projekt

Oddelek: Programiranje
11904 (737) kow
»

[C++] Linker error

Oddelek: Programiranje
51296 (1296) Quikee
»

kaj zna c#

Oddelek: Programiranje
151770 (1582) snow
»

c++ serijski port

Oddelek: Programiranje
252569 (1960) fx
»

c++ datoteke

Oddelek: Programiranje
464062 (3551) Vesoljc

Več podobnih tem