3

独自のフレームワークを持つサードパーティのプロジェクトをインポートしています。そのAPIを勉強したいのですが、そのプロジェクトを開こうとすると、

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

私は解決策を探すのにほぼ1時間半を費やしました。

Link Binaries with Libraries目的のフレームワークが含まれていますが、最初は欠落していましたが、すでに追加しました

プロジェクトは数回ビルドされ、クリーンアップされました。

編集1 フレームワークのバイナリでターミナルを使用して「file」コマンドを実行しました

file iSmartSDK
iSmartSDK: Mach-O universal binary with 2 architectures
iSmartSDK (for architecture armv7): Mach-O object arm
iSmartSDK (for architecture armv6): Mach-O object arm
4

2 に答える 2

2

フレームワークはARM用にのみコンパイルされており、Intel(i386)用にはコンパイルされていないようです。iPhoneで実行してみて、何が起こるか見てみましょう。

または、フレームワークのバイナリでターミナルを使用して「file」コマンドを実行し、サポートされているアーキテクチャを確認することもできます。サードパーティのフレームワークはオープンソースですか?おそらく、ソースをダウンロードしてプロジェクトに含め、プロジェクトをビルドするたびにコンパイルして、そのような問題が発生しないようにする必要があります。

于 2012-12-11T12:15:12.427 に答える
1

あなたはのsにViewController.m追加されていないと思います。target's compiled sourcebuild phases

更新1:「アクティブなアーキテクチャのみを構築」を「はい」に設定します。

Target->Build Settings

更新2:あなたが書いていないことを確認してください#import "ViewController.m"。!!

于 2012-12-11T12:16:44.203 に答える