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 » |