Wie kompilieren Sie und verknüpfen Sie zusammen Objekt-Dateien in C++ unter Verwendung der gleichen header-Datei?

Ich habe dieses Problem, wo der GCC-compiler scheint zu scheitern, wenn es um die Verknüpfung von zwei Objekt-Dateien, die ich zusammen haben. Die beiden Objekt-Dateien foo1.cc und foo2.cc Klassen aus einer header-Datei namens foo1.hh. Neben der header-Datei foo.hh hat als externe Deklaration einer Objekt-Instanz wird in foo1.cc.

Es sollte angemerkt werden, dass die header-Datei foo.hh wird nur dann definiert werden, wenn zwischen den beiden source-Dateien foo1.cc und foo2.cc.

Wenn ich kompilieren der source Dateien mit dem folgenden Befehl, alles scheint zu funktionieren:

g++ foo1.cc foo2.cc

Der obige Befehl erzeugt eine ausführbare Datei namens a.out.

Wenn ich versuche zu kompilieren die Quelldateien in Objektdateien unabhängig:

g++ -c foo1.cc
g++ -c foo2.cc
g++ -o foo1.o foo2.o

Den GCC-compiler beschwert sich, dass es Undefinierte Referenzen auf Funktionen in foo2.cc. Diese Funktionen sollten definiert werden, in foo1.cc; aber der linker nicht erkennen, dass.

Ich Frage mich, ob es war ein Weg, um dieses Problem mit dem GCC-compiler.

  • Willkommen ALSO! Sicher sein, zu akzeptieren, der die meisten hilfreiche Antwort.
  • Sie sollten akzeptieren, eine Antwort.
InformationsquelleAutor Justin | 2012-06-04
Schreibe einen Kommentar