Ich habe diesen sehr einfachen C++ - Code, der nicht kompiliert wird. Was mache ich falsch?"ld: Symbol (e) nicht für Architektur x86_64 gefunden" (g ++, OS X 10.11)
main.cpp
#include "thing.hpp"
int main() {
thing* t = new thing;
t->foo();
delete t;
return 0;
}
thing.cpp
#include "thing.hpp"
void thing::foo() {};
thing.hpp
#ifndef THING_H
#define THING_H
class thing {
public:
void foo();
};
#endif
ich mit dem folgenden Befehl kompilieren:
g++ main.cpp -o main
Das ist mein Ausgang:
Undefined symbols for architecture x86_64: "thing::foo()", referenced from: _main in main-29d9b1.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Alle Dateien im selben Verzeichnis befinden. Ich verwende Apple LLVM Version 8.0.0 (clang-800.0.42.1) unter OS X 10.11.6. Danke im Voraus!
Sie nicht mit der 'thing.cpp'-Datei erstellen. Es muss auch in deinem Build enthalten sein, ansonsten weiß der Compiler das nicht magisch. [Verwandte Lektüre über * Übersetzungseinheiten *] (https://en.wikipedia.org/wiki/Translation_unit_%28programming%29). –
suchen Sie immer nach Ihren Fehlermeldungen auf Google, Sie werden fast immer die Antwort finden. – xaxxon