1

私は iOS/iPhone/XCode の世界にまったく慣れていないので、かなり複雑なものと誰もが知っておくべき単純なものの間であると推測する場合は、単純な答えを使用します。:-)

よし、他社に委託していたiPhoneのプロジェクトを引き継いだ。今の私の唯一の目標は、ダンシングを構築できるようにすることです。XCode 4.2 をセットアップし、適切な SDK をインストールしました。プロジェクトをロードしましたが、この時点まではすべて問題ないようです。ただし、ビルドすると、ビルドのリンク段階であると思われるものからエラーが発生します。ビルド中はステータスがすぐに変わるのでよくわかりません。私が得るエラーは次のとおりです。

XCode ビルドからのエラー

私がオンラインで見つけたものから、私が使用しているライブラリの 1 つが i386 プラットフォーム用にコンパイルされていないようです。まず、私が使用しているライブラリ (これらのエラーの発生元) は現在サブプロジェクトとして含まれており、アーチに依存しないと思っていた.aファイルを生成するため、これは私には意味がありません (ここで間違っていますか? ??)。また、XCode に i386 アーキテクチャをビルドするように指示したプロジェクトのどこにも見つかりません。これは私がこれまでに行ったことです:

  • これらのエラーが発生したファイルが [Build Phase] タブの [Compile Sources] セクション (.m ファイル) に含まれていることを確認してください。
  • アーキテクチャをarmv6armv7に設定し、Build Active Architecture Onlynoに設定します。(下の画像を参照)

主なプロジェクト構成 メイン プロジェクトのビルド構成

サブプロジェクト構成 サブプロジェクト構成



リリース構成を使用してビルドすると、まだこのエラーが発生し、理由がわかりません。ビルド構成で見ているものはすべて、アームアーキテクチャですべてをビルドする必要があることを示しているようです。

4

2 に答える 2

3

アーキテクチャ設定をいじったため、エラーが発生しています。これらを ARM コード向けに修正するのではなく、i386 も許可する必要があります。

現在、(サブ) プロジェクトの 1 つ以上が ARM コードのみをビルドしているため、シミュレーター バージョンをビルドしようとするとリンカー エラーが発生します。これは、アーキテクチャの設定が本来あるべきものではないために発生しています。

Any iOS SDKの設定に注意してください。ARM コードのみをビルドするため、この設定は正しくありません。特定の設定を選択した後 (シングルクリック)、キーボードのバックスペース キーを使用して、これらの設定を完全に削除します。

そして、これはあるべき姿です: ここに画像の説明を入力

$(ARCHS_STANDARD_32_BIT)ARMV7デバイス固有のコードをビルドするとき、およびi386シミュレーター固有のコードをビルドするときに解決されます。私のスクリーンショットのようにコードを含めるARMV6必要があるのは、古い iOS デバイス (iPhone 3G 以下) に結果を提供する予定がある場合のみです。

これらの設定がすべての (サブ) プロジェクトで有効になると、すべてがスムーズに機能するはずです。

プロジェクトからユニバーサル ライブラリを作成するには、静的ライブラリを他の開発者に配布する場合に便利ですLIPO

例:

lipo input_library_1.a input_library_2.a -create -ouput output_library.a

input_library_1 がi386固有 (シミュレーター) で、input_library_2 がARM固有 (デバイス) であるとしましょう。これにより、シミュレーターとデバイスの両方で使用できるユニバーサル バージョンに結合されます。

于 2012-04-18T11:47:08.227 に答える
0

デバイス(armv6またはarmv7)用に構築された静的ライブラリにリンクしようとしているようです。シミュレーターをビルドする場合、アーキテクチャーは i386 になります。したがって、これらすべての厄介なリンクエラーが発生します。解決策は、シミュレータ用にコンパイルされたライブラリもプロジェクトに含めることです。

于 2012-04-18T11:46:56.450 に答える