2012年4月6日金曜日

Undefined symbols for architecture i386


エラーの例:
Undefined symbols for architecture i386:
  "someVar", referenced from:
    - [SomeClass someMethod:]  in SomeClass.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with code 1 .....








リンク時にシンボルが見つからない場合に発生します。

(1).hはimportしたが、frameworkをリンク対象に追加していないときに発生します。.hをimportすることでシンボルが解決されコンパイルは通りますが、ライブラリがないとリンクできず、エラーとなります。
PROJECT > Build Phase > Link Binary With Librariesでframeworkを追加します。

(2)インクリメンタル・コンパイルのため、変更のないソースはコンパイルされません。そのソースが参照する変数などが削除されると、コンパイル済みの.oをリンクするときに参照先がなく、エラーとなります。いったんcleanし、全ソースを再ビルドすると解消します。

0 件のコメント: