アプリに使用するコンポーネントの 1 つで、リンカー フラグの 1 つとして -all_load を使用する必要があります。しかし、このフラグを追加すると、アプリで使用している別のライブラリからエラーが発生します。アプリをアーカイブすると、次のエラーが表示されます。
Apple Mach-O リンカ エラー 64 アーキテクチャ armv7s の重複シンボル
この状況の解決策は何ですか?
ロード フラグなしでコードを実行しようとしないでください。このフラグの理由は、ObjectiveC ライブラリのカテゴリが適切に処理されないという Apple リンカの問題に対処するためです。これに切り替えてみてください:
-force_load $(BUILD_PRODUCTS_DIR)/libfoo.a
編集:Xcode 4.6以降、これは不要になったことを確認しましたが、確認していません。
そのフラグを削除して、それなしで試してください。それでもうまくいかない場合は、ライブラリごとに --force-load を使用してみてください。
David H の答えは基本的に正しいですが、コード サンプルに 2 つのタイプミスがあります。特別な読み込み動作を必要とするライブラリの場合、リンカー パラメータは次のようになります。
-force_load $(BUILT_PRODUCTS_DIR)/libfoo.a
注: 私のプロジェクト (Xcode 4.6.1 を使用) で同様の状況に遭遇しましたが、どちらも指定されていない (iOS5 と iOS6 の両方を対象としている) 場合でも、アプリはリンクしませ-all_load
ん-force_load
。