Linker-Error bei global definierter struct, hilfe!
-
Hallo,
ich war mir jetzt nicht sicher wohin mit der Frage, da es um C++ Code geht dachte ich einfach mal hierrein.
Also folgendes, ich arbeite mit dem MS Visual Studio 2008, habe mir ein Konsolenprojekt angelegt, eine neue Klasse angelegt und in die stdafx.h mit includiert für die main. Desweiteren und hier kommt es zum Error, will ich in der HeaderDatei der Klasse eine globale Struktur anlegen:
STRUCT foo[] = { ... };Beim compilieren linken:
"error LNK2005: "struct CMD_TABLE * commands" (?commands@@3PAUCMD_TABLE@@A) already defined in stdafx.obj"
"fatal error LNK1169: one or more multiply defined symbols found"Ich habe keine ahnung was ich an den Linkereinstellungen ändern muss damit er das so akzeptiert, an den Header-Guards liegt nicht die hab ich drin.
Eine Möglichkeit die ich jetzt noch gefunden hab ist, die ganze structur in der Methode wo ich sie brauch als static zu definieren, aber das scheint mir nicht der optimalste Ausweg.
Hoffe ihr könnt mir da weiter helfen.
Lg Tobi
-
Vielleicht hast du die struct im Header definiert? Das darf natürlich nicht sein, da sie sonst für jede Übersetzungeinheit, welche die Headerdatei einbindet, einmal existiert. Also als extern deklarieren und dann in der .cpp-Datei.
Wenn foo nicht commands ist, dann verursacht foo wahrscheinlich auch nicht das Problem.
-
Ich habs jetzt mit einem static gelöst, also bei der Definition im Header. Aber danke

Lg Tobi