2011-10-24 13 views
9

私は自分のiPhoneアプリケーションで使用したいスタティックライブラリをいくつか持っています。私がシミュレータを実行しようとすると、私はエラーをリンクします。 私はiOS開発の新人です。以前構築したライブラリとリンクするときにこの問題に遭遇しました。iOS - リンクされているアーキテクチャではないアーカイブ用にファイルが構築されています(i386)

undefined symbols for architectyre i386 

私はこの権利をするために設定する内容がわからない:私はこれらのライブラリから参照するすべての機能を意味

file was built for archive which is not the architecture being linked (i386) 

は、この私に与えます。スタティックライブラリは、armv7、supporteedプラットフォームarmv6 armv7用にビルドされています。

+6

ライブラリはシミュレータと互換性がなく、i386用にビルドされていないようです。デバイス上でテストするか、ライブラリのコードを利用できる場合は、i386アーキテクチャを含めて再構築してください –

+0

はい、コードを取得しました。i386用にビルドする方法を指定するにはどうすればよいですか?たった今; "アーキテクチャ:標準(armv7)"、 "有効なアーキテクチャ:armv6 armv7"、 "アクティブアーキテクチャのみを構築:いいえ" – KaiserJohaan

+0

i386を有効なアーキテクチャに追加しますか? –

答えて

12

私はiPad用に構築していた静的ライブラリと非常に似たエラーをソートしました。私は私の解決策がプロジェクトのArchitectures設定に "i386"を追加することだと考えています(Project - > Build Settings - > Architectures - またはそれはValid Architecturesでしたか?) - 'i386'強調表示された行に)。あなたに近づけるべきだれでも。

もう1つ注意が必要ですが、「ビルドアクティブアーキテクチャのみ」も「いいえ」に設定する必要があります。それはすでに私のために設定されていましたが、それはあなたが確認したいかもしれないものです。

+0

これは私のために働いた – Krishnan

2

この同じ問題に苦しんで、ビルド設定の更新、リンカー検索パスのクリアなどのすべての回答に続いて、私は最終的に私のために働いた答えを発見しました。

ビルドする前に、iOSデバイスの代わりに正しいタイプ(iPhone Simulator)を選択してください。その後、再構築します。それ以外の場合は、iOSデバイス用に構築されたライブラリ(アームプロセッサ)をシミュレータ(i386)で使用しようとしています。はっきりしていたはずですが、そうではありませんでした。

前:

iOS Device Settings

後:今

iPhone 5.1 Simulator Settings

、ナビゲータの製品群で見る>右あなたの静的ライブラリ(.aというファイルをクリックしてください)> Finderに表示すると、Debug-iphoneosではなくDebug-iphonesimulatorフォルダに表示されます。私は元々フォルダ名に注意を払っていなかったし、もっと早く考えていたかもしれない。

これが役に立ちます。

関連する問題