error LNK2005
-
Die Sache ist die: Ich habe mir eine include Datei geschrieben. Wenn ich diese einfach so in mein Projekt einbinde und kompiliere gehts! Aber jetzt ist sie fertig und ich möchte sie ins stdafx.h einbinden, damit sie mit vorkompiliert wird und ich sie net immer neu kompilieren muss. Schön, dachte ich mir, probieren wirs aus aber dann kamen ein paar errors in dem Stil:
mer.obj : error LNK2005: "public: void __thiscall mer::ostream::setoptions(struct HDC__ *,int,int,unsigned long,int)const " (?setoptions@ostream@mer@@QBEXPAUHDC__@@HHKH@Z) bereits in stdafx.obj definiert
Was will mir das sagen?
-
Kann mir jemand helfen?
-
Achja: Ich weiß, dass in in header keine Funktionen sollen, aber ich möchte die Datei so benutzen wie z.B.: die header der STL. Da muss man ja auch nur die header inkludieren und hat dann alle Funktionen... Wie geht das?
-
Sieht aus als würde die komplette Funktionsimplementation in einem Header stehen, der in zwei .cpp - dateien reingezogen wird (stdafx.cpp und mer.cpp)
Der Linker sieht zwei Implementationen der gleichen Funktion, und weiß nicht, welche er verwenden soll.
Lösung: entweder nimmst du nur die Deklaration in den Header, und die implementation in eine separate .cpp - Datei, oder du machst die functionsdefinition im header inline.
-
OK, das hab ich inzwischen auch rausgefunden...
Ich dachte mir, erstellste doch einfach eine statische Bibliothek...
Klappt auch, lässt sich fehlerfrei kompilieren und so witer und so fort... nun würde ich das ganze konstrukt gerne in meinen Projekten verwenden...
Ich habe die header der die ich bei der Bibliothek benutzt habe inkludiert. Das alleine nützt natürlich nichts, das ist mir spätestens klar seit ich diesen error bekomme:error C3861: 'cout': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
Nicht verwirren lassen, meine Funktion heißt wirklich cout. Nun, ich denke mal, das liegt daran, das er die .lib ja net kennt! Aber wie kann ich das ändern?
-
Lib (wie eine andere Datei) zum Projekt zufügen, oder unter Project/Settings/Linker eintragen
-
Also dem Projekt hinzufügen hilft nicht, wo genau kann ich das beim Linker eintragen? (VS .Net 2003)
-
Wenn ich mirt die Fehlermeldung anseh, stolpert schon der Compiler drüber. Bist du sicher, daß du den richtigen header reinziehst?
-
Der selbe den ich auch bei der erstellung der Bibliothek verwendet habe!
-
Hm... poste mal code, aber nichjt alles!
Eine Schuß ins blaue: hast du gleichlautende #include-guards in verschiedenen headern?
-
Ich sehe grade, es liegt daran das ich nicht den richtigen namespace nutze! (Ich idiot!) Jett klappt alles! (Ich bin ja soo bescheuert! Tut mir leid das ich euch genervt hab!)
-
k.p. - einmal ist keinmal
-
Ok, dann will ich mal eine sinnvolle Frage stellen! (Ich weiß, ist offtopic)
Wo kann man einstellen, welche Projekte der Projektmappe neu erstellt werden sollen, wenn ich entnervt auf f7 hämmere?
-
Hab noch nicht so viel in der VC7+ IDE gearbeitet, aber ich denk mal das ist das Projekt, welches als "Startup project" eingestellt ist (rechtskliuck auf Projekt im Solution Explorer, "Set as Startup Project" - k.A. wie das im deutschen heißt), sowie alle 8erkannten) Abhängigkeiten.
-
das hatte ich auch:
Projekt-Eigenschaften -> Linker -> Command Line: Folgenden Befehl einfügen: /FORCE:MULTIPLE