2017-06-10 31 views
-1

コンパイルされない、この非常にシンプルな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)を使用します。前もって感謝します!

+0

あなたは 'thing.cpp'ファイルをビルドできません。それはあなたのビルドにも含める必要がありますが、コンパイラは魔法のように別のことを知っているわけではありません。 [関連翻訳*翻訳単位*](https://en.wikipedia.org/wiki/Translation_unit_%28programming%29)。 –

+2

Googleでエラーメッセージを常に検索すると、ほとんどの場合その回答が見つかります。 – xaxxon

答えて

-2

私のまもなく誰かが同じ質問hereを尋ねて、それは正しく cppファイルをg ++に渡さなければならないと正しく述べられました。

だから、この1作品:

g++ main.cpp thing.cpp -o main 
+0

重複した質問には、追加の回答は必要ありません。既存の回答をコメントにするか、評判があれば近い投票をするだけです。 – xaxxon

関連する問題