2

シミュレーター用にビルドすると、次のエラーが発生します。

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_SA_OAuthTwitterEngine", referenced from:
      objc-class-ref in NetworkUpdateViewController.o
  "_OBJC_CLASS_$_SA_OAuthTwitterController", referenced from:
      objc-class-ref in NetworkUpdateViewController.o
  "_OBJC_CLASS_$_MGTwitterEngine", referenced from:
      objc-class-ref in TwitterLoginViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

そして、これはローカル デバイス (iPad) 用にビルドする場合:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_SA_OAuthTwitterController", referenced from:
      objc-class-ref in NetworkUpdateViewController.o
  "_OBJC_CLASS_$_SA_OAuthTwitterEngine", referenced from:
      objc-class-ref in NetworkUpdateViewController.o
  "_OBJC_CLASS_$_MGTwitterEngine", referenced from:
      objc-class-ref in TwitterLoginViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

考えられることはすべて試しました...助けてもらえますか?

4

1 に答える 1

4

Clang は、エラーを人間が読めるプレーン テキストに入れるのが得意ですが、全体像を見てあきらめることもあります。ここを見て:

"_OBJC_CLASS_$_SA_OAuthTwitterController"

標準の _OBJC_CLASS_$ 部分を取り除くと、何が得られますか? SA_OAuthTwitterController.

さて、第二部:

... referenced from:
  objc-class-ref in NetworkUpdateViewController.o
   "_OBJC_CLASS_$_SA_OAuthTwitterEngine", referenced from:
  objc-class-ref in NetworkUpdateViewController.o
  "_OBJC_CLASS_$_MGTwitterEngine", referenced from:
  objc-class-ref in TwitterLoginViewController.o

明らかに、:およびという名前のクラスでこの存在しないヘッダー参照しています。 NetworkUpdateViewControllerTwitterLoginView

この時点で、2 つの可能性が考えられます。コンパイル ソース リストに適切なファイルを追加していないか、iOS シミュレータ (アーキテクチャ i386) 用に構築されていないフレームワーク (またはユニバーサルライブラリと呼ばれることが多い)。1 つの場合は、問題のある実装ファイルを見つけて [コンパイル ソース] リストにドラッグし、ビルドして実行します。ケース 2 の場合は、デバイスでテストするか、lib を使用可能なユニバーサル ライブラリに再コンパイルする必要がありますが、これは思ったより難しい作業です。

于 2012-07-14T22:30:00.060 に答える