C ++ - /tmp/cckpbrw.o:main.cc:(.Text+0x9d):undefined Referenz [Duplicate
-
16-10-2019 - |
Frage
Diese Frage hat hier bereits eine Antwort:
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.
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