web-dev-qa-db-ja.com

ファイル[パス]を無視すると、ファイルに必要なアーキテクチャi386がありません

私はXcodeとIphoneの開発に非常に慣れていないため、次の問題に遭遇しました。

新しいプロジェクトを開き、*。hファイルと* .aファイル(特定のデバイスベンダーから受け取ったもの)を追加しました。次の警告が表示されます。

ld:警告:ファイル/ Users/udi/Desktop/Xcode/Xcode Projects/Scosche/libmyTrekSDK_armv7.aを無視します。ファイル/ Users/udi/Desktop/Xcode/Xcode Projects/Scosche/libmyTrekSDK_armv7.aに必要なアーキテクチャi386がありません(2スライス)

警告を無視して、ヘッダーファイルで指定されたクラスをインスタンス化しようとすると、次のエラーが発生します。

ld:警告:ファイル[Path/FileName.a]を無視しています。ファイル[Path/FileName.a]に必要なアーキテクチャi386がありません(2スライス)

アーキテクチャi386の未定義のシンボル:

「_OBJC_CLASS _ $ _ HRMonitor」、以下から参照:

viewController.oのobjc-class-ref

ld:アーキテクチャi386のシンボルが見つかりません

clang:エラー:リンカーコマンドが終了コード1で失敗しました(-vを使用して呼び出しを確認してください)

(他の多くの投稿で述べられているように)フレームワーク検索パスをチェックしましたが、それは明らかです。

より詳しい情報:

  1. Xcode 4.6.1を使用しています
  2. ファイルは現在、プロジェクトのルートフォルダーにあります。
  3. Single View Application tamplateを使用しています。

助けに感謝

24
U_D

この警告は、デバイス(ARM)用に作成されたライブラリをシミュレータ(i386)で使用しようとしていることを意味します。

次の端末コマンドを使用して、ユニバーサルライブラリを作成できます。

lipo -create lib_arm.a lib_i386.a -output lib_universal.a

lipoコマンドの詳細情報 ここ

52
Dmitry Zhukov

ターゲットの「ビルド設定>アクティブなアーキテクチャのみをビルド」を「いいえ」に変更します

これはDmitry Zhukovの答えと同じことをしていますが、Xcodeを介して行うのではなく、Xcodeを介して行います。

7
Lucas Goossen

サードパーティのコードを使用している場合は、一部のSDKがシミュレータで機能しない可能性があることに注意してください。デバイスでプロジェクトを実行すると、同じビルドエラーが発生しなくなりました。

4