Error LNK 2005
-
Hallo,
Bei meinem Programm taucht dieser fehler auf wenn ich den header einer klasse
in das H file stellezb
Klasse A.h inlcudiert Class B.h -> es kommt zum Link fehler
KWMedicalImageViewerExampleLib.lib(vtkKWMyWindow.obj) : error LNK2005: "public: __thiscall MFAImagePreview::MFAImagePreview(void)" (??0MFAImagePreview@@QAE@XZ) already defined in KWMedicalImageViewerExample.cxx.objwobei MFAImagePreview::MFAImagePreview(void) der konstruktor von Klasse B ist
wenn ich allerdings in A.cxx den Header von B.h stelle, dann kommt es zu keinem Fehler
ich verstehs leider nicht, hat jemand einen klugen rat parat?
Thx,lg
Maz
-
Hast du Include Guards drin? (falls dir das nichts sagt: google...)
Ansonsten versuch mal Code zu posten, und zwar ein minimales Beispiel, das man so wie es ist in den Compiler jagt und den Fehler bekommt. Das heißt reduziere deinen Code auf das für den Fehler wesentliche!
-
Kann es sin, dass du in B.h MFAImagePreview::MFAImagePreview(void) definiert wird (und zwar nicht inline!)?
-
ja ich hab Include gurads drin
leider ist dasa ein auf KWWidgets baiserendes bsp, dass den sourcode in TCL umformatiert, ein minimales beispiel krieg ich so schnell nicht zu stande, ohen dass ich vermutlich ewig viele weitere fehler produziere
@Sepp
in meinem MFAImagePreview.h file steht nur
...
public:
MFAImagePreview();wir also nicht vordefiniert
bei genauerem hinsehen hab ich gemerkt dass weiter oben im Editor-kompilierungsnachrichtstext steht
vtkKWMyWindowTcl.obj : warning LNK4006: "public: __thiscall MFAImagePreview::MFAImagePreview(void)" (??0MFAImagePreview@@QAE@XZ) already defined in vtkKWMyWindow.obj; second definition ignored
da ist es allerdings nur eine warnung
abere die eigentliche frage für mich ist noch immer, wieso kann ichs im *.cxx file ohne probleme verwenden, und im H file nicht?
Danke für eure Meinungen!
-
Ok leute habs gelöst
das problem war, dass mein MFAImagePreview.h file am ende das MFAImagePreview.cxx
includiert hatalso
#ifndefine __MFAImagePreview_h
#define __MFAImagePreview_hclass MFAImagePreview{
.......}
#include MFAImagePreview.cxx
#endifdas hat probleme gemacht
ich habs jetzt im CmakeLists.txt file mit
add_executable(PATH_TO/MFAImagePreview.cxx) angegeben!
danke für eurer hilfe dennoch
