コンパイルされない、この非常にシンプルなC++コードがあります。私は間違って何をしていますか?"ld:アーキテクチャx86_64でシンボルが見つかりません"(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
私は、次のコマンドでコンパイルします。
g++ main.cpp -o main
これは私の出力です:
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)
すべてのファイルが同じディレクトリにあります。 OS X 10.11.6でApple LLVMバージョン8.0.0(clang-800.0.42.1)を使用します。前もって感謝します!
あなたは 'thing.cpp'ファイルをビルドできません。それはあなたのビルドにも含める必要がありますが、コンパイラは魔法のように別のことを知っているわけではありません。 [関連翻訳*翻訳単位*](https://en.wikipedia.org/wiki/Translation_unit_%28programming%29)。 –
Googleでエラーメッセージを常に検索すると、ほとんどの場合その回答が見つかります。 – xaxxon