Linkerfehler - ganz einfaches Projekt
-
Hallo,
ich bekomme bei dem folgenden Projekt (Übung aus dem Stroustrup-Buch) einen Linkerfehler mit Visual Express. Kann mir jemand sagen, warum? Eigentlich stimmt doch alles.
//my.h extern int foo; void print_foo(); void print(int);//my.cpp #include"std_lib_facilities.h" #include"my.h" void print_foo(){ cout << foo; } void print(int i){ cout <<i; }//use.cpp #include"my.h" int main(){ foo =7; print_foo(); print(99); }Fehlermeldung:
LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
LNK2005: int foo bereits in my.obj definiertVersteh ich leider nicht.
-
Include-Guards vergessen?
-
Ah! Nicht vergessen, sondern unbekannt. Aber das ist wohl Ziel der Aufgabe, nach einer Lösung zu suchen. Das Problem der doppelten Definition ist mir nun auch klar(nachdem ich das Kapitel nochmal gelesen habe). Cool, danke.
-
Könnt Ihr mir auf die Sprünge helfen?
Ich sehe in my.obj (my.cpp) nur eine Deklaration von int foo (via my.h), keine Definition?!
-
Verstehe ich auch nicht so ganz.. http://ideone.com/ze164D
-
Aber es geht nicht. Liegt's am Compiler? Das Beispiel zu Include-Guards zeigt es ja auch so.
-
Wie gesagt, in dem von Dir gezeigten Quelltext ist int foo nirgendwo definiert ... Du unterschlägst uns irgendetwas ...
So wie gezeigt müsste der Linker eigentlich eine unsolved reference melden ...
-
Es könnte ja noch eine
my.hgeben, die dasexternnicht enthält.
-
Pfff ... das wäre dann die von mir erwähnte 'Unterschlagung' ...
-
Genau, ich schreibe einfach ganz andere Sachen hier rein, nur um euch zu beschäftigen. Weil mir langweilig war am Sonntag

Ich bin mir sicher, dass folgender Satz etliche "Wusste ich's doch!" auslösen wird, allerdings weiß ich es einfach nicht besser - ich bin hier neu.
Denn: Ja, es geht jetzt tatsächlich. Kein Linkerfehler mehr. Ich hab gelesen (irgendwo in der Hilfe), man soll die beteiligten Dateien nochmal neu kompilieren, damit es weggeht. Aufgetreten ist es angeblich, weil zwischen den Kompilierungen irgendwas geändert wurde. Keine Ahnung, ob das Sinn macht.
Alles neu zu kompilieren, hat irgendwie nichts geändert.
Ich hab mir einen schönen Sonntag gemacht und es eben nochmal probiert. Jetzt geht's. Tut mir leid, falls sich hier jemand veralbert fühlt. Das war nicht meine Absicht. Wie gesagt, ich fang gerade an zu Programmieren. Und ganz trivial war es nun auch wieder nicht.
Frohe Weihnachten :xmas1: und danke, dass ihr euch auch mit Anfängerfragen/-fehlern befasst.