Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błędy podczas dzielenia kodu na kilka plików źródłowych

Ostatnio zmodyfikowano 2011-02-06 12:32
Autor Wiadomość
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
P-27848
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.
P-27853
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
P-27855
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.
P-27858
malan
» 2011-02-05 23:06:40
Najlepiej by było gdybyś wrzucił tu te 3 pliki...
P-27868
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.
P-27875
« 1 »
  Strona 1 z 1