Błędy podczas dzielenia kodu na kilka plików źródłowych 
Ostatnio zmodyfikowano 2011-02-06 12:32
| DDD Temat założony przez niniejszego użytkownika | Błędy podczas dzielenia kodu na kilka plików źródłowych  » 2011-02-05 18:14:30 Witam. 
 Postanowiłem nauczyć się dzielenia kodu bo zacząłem pisać większy projekt i wiem, że potem w kodzie można się pogubić.
 Niestety napotkałem około 200 błędów. Na szczęście dzielnie je przezwyciężyłem ;]! Jenak teraz wyskoczyły mi nowe problemy których już nie mogę przejść. Oto one: 
 gra.obj : error LNK2005: "class Cpostac gracz" (?gracz@@3VCpostac@@A) already defined in main.obj
gra.obj : error LNK2005: "class Cpostac GUI" (?GUI@@3VCpostac@@A) already defined in main.obj
 gra.obj : error LNK2005: "struct BITMAP * teren" (?teren@@3PAUBITMAP@@A) already defined in main.obj
 gra.obj : error LNK2005: "struct BITMAP * bufor" (?bufor@@3PAUBITMAP@@A) already defined in main.obj
 gra.obj : error LNK2005: "struct DATAFILE * data" (?data@@3PAUDATAFILE@@A) already defined in main.obj
 gra.obj : error LNK2005: "short (* map)[27]" (?map@@3PAY0BL@FA) already defined in main.obj
 gra.obj : error LNK2005: "int frame" (?frame@@3HA) already defined in main.obj
 gra.obj : error LNK2005: "long volatile speed" (?speed@@3JC) already defined in main.obj
 gra.obj : error LNK2005: "void (__cdecl* aktywnaScena)(void)" (?aktywnaScena@@3P6AXXZA) already defined in main.obj
 E:\pliki C++\Averna\Debug\Averna.exe : fatal error LNK1169: one or more multiply defined symbols found
 Pliki źródłowe to: main.cpp, main.h, gra.cpp
 Jeżeli ktoś z tego błędu nie potrafi mi pomóc to oczywiście z chęcią podeśle cały jeden działający kod i już ten po podzieleniu z tymi błędami. Proszę o pomoc! 
 Pozdrawiam,
 Domdziu | 
|  | 
| pekfos | » 2011-02-05 18:27:11 nie chce mi sie tego czytać ale po komunikatach widzie 2 rzeczy: 1.piszesz w C (?) struct BITMAP * bmp;  to konstrukcja z C w C++ używamy BITMAP * bmp; 2. masz problem z definicjami zmiennych. deklaruj je! w headerach wal to: extern BITMAP * bmp; a w implementacji (.cpp) BITMAP * bmp; W ten sposób unikniesz błędów późnego łączenia. | 
|  | 
| DDD Temat założony przez niniejszego użytkownika | » 2011-02-05 18:38:25 Ale ja mam właśnie tak napisane...;/ Może jak bym ci pokazał pliki to byś coś poradził.
 Jak by Ci się chciało to moje gg: 13980689
 
 Pozdrawiam
 | 
|  | 
| Elaine | » 2011-02-05 19:41:28 | po komunikatach widzie [...]: 1.piszesz w C (?)
 
 struct BITMAP * bmp;to konstrukcja z C w C++ używamy
 
 BITMAP * bmp; | 
 W komunikacie ten struct wystąpi nawet, jeśli w kodzie go nie ma, narzędzia Microsoftu po prostu tak manglują i demanglują.
 Swoją drogą, elaborate type specifiers  się w C++ w paru przypadkach używa, więc nie rozumiem, dlaczego fakt korzystania z nich miałby oznaczać pisanie w C. | 
|  | 
| malan | » 2011-02-05 23:06:40 Najlepiej by było gdybyś wrzucił tu te 3 pliki... | 
|  | 
| pekfos | » 2011-02-06 12:32:54 może nie jest to dowód pisania w C ale wiem że w C bez struct nie dało sie używać struktur chyba że użyto typedef.
 | 
|  | 
| « 1 » |