Frage

Befolgen Sie hier das Beispiel: http://www.learncpp.com/cpp-tutorial/19-header-files/

In Zusammenhang mit add.h und main.cpp

Wenn ich versuche, main.cc zu kompilieren (ich habe gerade eine andere Erweiterung verwendet), bekomme ich Folgendes:

/tmp/cckpbRW.o:main.cc:(.text+0x9d):undefined reference to 'add(int, int)' collect2: ld returned 1 exit status

Wie kann ich dieses Problem beheben?

Vielen Dank.

War es hilfreich?

Lösung

Sie haben Ihre nicht verknüpft main dagegen gegen dein add Eins, wenn der Linker versucht, die ausführbaren Ausführungsfähigkeiten zu erstellen, kann er die Definition des Symbols nicht finden add(int, int) es verwendet.

Sie sollten kompilieren main Objekt, add Objekt und verknüpfen Sie sie miteinander aus:

g++ -c -o main.o main.cpp
g++ -c -o add.o add.cpp
g++ -o executable main.o add.o

oder

g++ -o executable main.cpp add.cpp

Dies wird zusammen add.cpp und main.cpp zusammenstellen

Andere Tipps

Sieht so aus, als würden Sie die zweite nicht verknüpfen .cpp Datei in die endgültige ausführbare Datei. Entweder kompilieren und gleichzeitig verknüpfen:

$ c++ -Wall -Werror -pedantic -g -otest1 add.cpp main.cpp

Oder kompilieren Sie sie separat und verlinken Sie dann:

$ c++ -Wall -Werror -pedantic -g -c main.cpp
$ c++ -Wall -Werror -pedantic -g -c add.cpp
$ c++ -Wall -Werror -pedantic -g -otest1 add.o main.o
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top