fehlerbehandlung
-
bei mir taucht immer wieder ein fehler auf mit dem ich aber nie was anfangen kann.
gui.obj : error LNK2005: "class gui_element * __cdecl create(enum GUI_TYPE)" (?create@@YAPAVgui_element@@W4GUI_TYPE@@@Z) ist bereits in main.obj definiert. C:\Dokumente und Einstellungen\\projekte\c ++\projekt\Debug\projekt.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.ich will jez nichts über den source loswerden. kann jemand ein allgemeines statement loswerden wie solche linkerfehler zustande kommen? ich meines so das passiert wenn man mehrfach includiert oder zwei objekte von einer abstrakten klasse erstellt, oder sowas. Die Vorschläge waren total blöd sollten aber das prinzip vermitteln wie ich eine antwort erhoffe.
thx für alles
bye freaker
-
freaker schrieb:
...
"class gui_element * __cdecl create(enum GUI_TYPE)" (?create@@YAPAVgui_element@@W4GUI_TYPE@@@Z) ist bereits in main.obj definiert.......
Steht da doch: Du hast eine Funktion (Hier "create(enum GUI_TYPE)") mehrfach definiert und gegen die "One definition rule" verstoßen.Grund ist zu 99% ein Fehler in Deiner Programmstruktur: Vermutlich hast Du Source in unterschiedliche Übersetzungseinheiten (".cpp") getrennt aufgenommen (evtl. via #include) und versuchst die zusammenzulinken.
Der Linker - dessen Aufgabe es ist, für jede genutzte Funktion (oder allgemeiner: "Symbol"), die passende Implementierung zu finden - bekommt nun mehrere angeliefert und weiß nicht, welche er nehmen soll.
Ach ja: Ändere doch mal den Threadtitel - der sagt so herzlich wenig aus und hat mit Deinem Anliegen eher wenig zu tun.Gruß,
Simon2.
-
danke für die schnelle antwort. ich habe diese funktin in der .h definiert. darf man ja aber nicht. ich habe es in die cpp geschrieben. war (dummer) fehler meinerseits. thx
-
Schön, dass ich helfen konnte.
Viel Erfolg noch,
Simon2.