Frage

Wenn ich versuche, das folgende C ++ - Programm auszuführen: AKTUALISIEREN (Aktualisierter Code, da der frühere Link einige Fehler hatte): http://pastie.org/private/pdpfpzg5fk7iegoHEBTQ

Ich bekomme Folgendes:

enter image description here

AKTUALISIEREN

Die jetzt auftretenden Fehler sind wie folgt:

enter image description here

Irgendwelche Ideen dazu?

Vielen Dank.

War es hilfreich?

Lösung

Sie verknüpfen nicht in GradeBook. Versuchen

g++ GradeBookMain.cc GradeBook.cc -o GradeBookMain

Sie haben auch ein Tippfehler "Maximun" anstelle von "maximal" in GradeBook.h

Andere Tipps

Sie haben Ihrem Compiler nicht gesagt, wo er das finden soll GradeBook Konstruktordefinition (daher „undefinierte Referenz“). Sie müssen alle Quelldateien separat an den Compiler weitergeben oder intermediäre Objektdateien für alle Kompilierungseinheiten erstellen und diese miteinander verknüpfen.

Effektiv ist die einfachste Lösung:

g++ GradeBookMain.cc GradeBook.cc -o GradeBookMain

Um einen meiner bevorzugten IRC -Bots zu zitieren: Undefined Referenz ist ein Linkerfehler. Es ist kein Kompilierfehler. #Includes helfen nicht. Sie haben das Ding in der Fehlermeldung nicht definiert, Sie haben vergessen, die Datei zu verknüpfen, die sie definiert, Sie haben vergessen, mit der Bibliothek zu verlinken, die sie definiert, oder wenn es sich um eine statische Bibliothek handelt, haben Sie die falsche Reihenfolge in der Befehlszeile der Linker . Überprüfen Sie, welche.

C ++ ist fallempfindlich. Zum Beispiel können Sie zum Beispiel DisplayMessage, aber Sie definieren DisplayMessage. Das sind zwei unterschiedliche Funktionen. Sie sollten die Definition von DisplayMessage in DisplayMessage ändern oder wenn Sie es aufrufen

Was Ihr Compiler Ihnen sagt, ist, dass die Klassenbuchklasse definiert ist und in der Kompilierstufe alles in Ordnung ist. Wenn es jedoch an der Zeit gekommen ist, ein vollständiges ausführbares Programm zu verknüpfen, kann er den tatsächlichen Code für diese Klasse nicht finden. Und das liegt daran, dass Sie nur GradeBookMain.cc zusammengestellt und verknüpft haben. Sie können sie beide gleichzeitig kompilieren und verknüpfen:

g++ GradeBookMain.cc GradeBook.cc -o program

Oder Sie können sie separat kompilieren und dann miteinander verknüpfen:

g++ -c GradeBookMain.cc -o GradeBookMain.o
g++ -c GradeBook.cc     -o GradeBook.o
g++ GradeBookMain.o GradeBook.o -o program

Sie müssen auch in GradeBook.cc kompilieren.

Im Moment wird die Klasse selbst nicht kompiliert oder verknüpft, und als solches kann der Linker die Klassenbuchklasse nicht finden - was sie beschwert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top