2012-02-20 6 views
0
Undefined symbols for architecture x86_64: 
    "KeyValue::KeyValue()", referenced from: 
     Mapper::map() in Mapper.o 
    "KeyValueList::KeyValueList()", referenced from: 
     QuickSort::group() in QuickSort.o 
    "KeyValueList::~KeyValueList()", referenced from: 
     QuickSort::group() in QuickSort.o 
     std::vector<KeyValueList, std::allocator<KeyValueList> >::_M_insert_aux(__gnu_cxx::__normal_iterator<KeyValueList*, std::vector<KeyValueList, std::allocator<KeyValueList> > >, KeyValueList const&) in QuickSort.o 
     void std::_Destroy<KeyValueList>(KeyValueList*) in QuickSort.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

私のコードには、他のエラーがあり、私は1つの警告が言っていません:私は考えていないコンパイラのエラー誰かが私の理解を助けることができましたか?

Implicit conversion loses integer precision: 'unsigned long' to 'int' 

が...誰かが私は、このエラーが何であるかを理解する助けてもらえリンクエラーの原因となり、どのように起こった可能性がありますか?

必要に応じてコードを入力できます。

+0

クラス「KeyValue」の定義を示してください。この症候群を引き起こす可能性があるいくつかの一般的な間違いがありますが、あなたのコードの一部を見ることなく、どのシチュエーションを見てもわかりません。 – zwol

+2

これらは_linker_エラーであり、コンパイルエラーではありません。 – ildjarn

+0

これらの機能を実装するのを忘れたのかもしれません。関連する.objを実行可能ファイルにリンクするのを忘れたのかもしれません。多分何か。見つけ出すには、A)修正するまで、またはB)ここにコピー&ペーストするための十分なプログラムがあるまで、あなたのプログラムのビットを削除してください。 http://sscce.org/を参照してください。 –

答えて

1

存在しないコードにリンクしようとしています。確かにx86_64ではありません。 KeyValue()はどこに定義されていますか? - それへのリンク。

おそらくMapperとQuicksortにKeyValueのヘッダーファイルが含まれていましたが、処理するコンパイラのソースは追加していませんでした。

+0

それはそうだった...私のコンストラクタとデストラクタを定義するのを忘れた...愚かな私、笑。私は前にリンカのエラーを見たことがないので、私は混乱していました。 – OghmaOsiris

+0

リンクに関するエラーメッセージは、通常、コンパイラのエラーメッセージよりもはるかに詳細ではありません。そのため、調査に時間を費やす価値があります。 – koan

関連する問題