Linker Error: ... ist bereits definiert
-
Hallo.
Folgende Situation: Zwei Funktionen in 2 unterschiedlichen Dateien,
Datei1.cpp DWORD WINAPI Function1(LPVOID lpParam) { CSingleLock(&csEntry); ... } Datei2.cpp DWORD WINAPI Function2(LPVOID lpParam) { CSingleLock(&csEntry); ... } Header.h CCriticalSection csEntry;sollen mit einer CriticalSection gegeneinander gesperrt werden. Header.h ist in den jeweiligen Headerfiles von Datei1.cpp und Datei2.cpp includiert.
Nun erhalte ich folgende Fehlermeldung:
"class CCriticalSection csEntry" ist bereits in Datei1.obj definiert.
Mindestens ein mehrfach definiertes Symbol gefunden.Wieso und wie löse ich das?
-
EDIT: War Quatsch...

Du kannst deine Globale in der einen cpp-Datei ganz normal als globale Variable deklarieren und in der zweiten mit einem "extern"-Statement deklarieren, dann ist sie da auch bekannt.
Also so:
//Datei1.cpp CCriticalSection csEntry; //Datei2.cpp extern CCriticalSection csEntry;
-
Das steht da schon!
-
Man definiert keine Variablen in Headerdateien.
Steck die Definition in eine einzige .cpp-Datei, und in den Header nur eine Deklaration (extern).
-
MFC Man schrieb:
Das steht da schon!
Ja, ich hab deinen Post nicht richtig gelesen (und mich schon korrigiert)...
-
Das wars! Danke.