Ich habe dieses Problem, bei dem der GCC-Compiler zu versagen scheint, wenn es darum geht, zwei Objektdateien zu verbinden, die ich zusammen habe. Beide Objektdateien foo1.cc
und foo2.cc
enthalten Klassen aus einer Header-Datei namens foo1.hh
. Außerdem hat die Header-Datei foo.hh
als externe Deklaration eine Objektinstanz, die in foo1.cc
erscheint.Wie kompilieren und verknüpfen Sie Objektdateien in C++ mit der gleichen Header-Datei?
Es sollte beachtet werden, dass die Header-Datei foo.hh
nur einmal zwischen den beiden Quelldateien foo1.cc
und definiert wird.
Wenn ich die Quelldateien mit dem folgenden Befehl kompilieren, alles scheint zu funktionieren:
g++ foo1.cc foo2.cc
Der obige Befehl eine ausführbare a.out
genannt produzieren wird.
Wenn ich versuche, die Quelldateien in Objekt zu kompilieren Dateien unabhängig:
g++ -c foo1.cc
g++ -c foo2.cc
g++ -o foo1.o foo2.o
Der GCC Compiler beschwert, dass es nicht definierte Verweise auf Funktionen in foo2.cc
sind. Diese Funktionen sollten in foo1.cc
definiert werden; der Linker erkennt das jedoch nicht.
Ich fragte mich, ob es eine Möglichkeit gäbe, dieses Problem mit dem GCC-Compiler zu umgehen.
Willkommen zu SO! Achten Sie darauf, die hilfreichste Antwort zu akzeptieren. – jncraton
sollten Sie eine Antwort akzeptieren. – Walter