2

アプリに使用するコンポーネントの 1 つで、リンカー フラグの 1 つとして -all_load を使用する必要があります。しかし、このフラグを追加すると、アプリで使用している別のライブラリからエラーが発生します。アプリをアーカイブすると、次のエラーが表示されます。

Apple Mach-O リンカ エラー 64 アーキテクチャ armv7s の重複シンボル

この状況の解決策は何ですか?

4

3 に答える 3

1

ロード フラグなしでコードを実行しようとしないでください。このフラグの理由は、ObjectiveC ライブラリのカテゴリが適切に処理されないという Apple リンカの問題に対処するためです。これに切り替えてみてください:

-force_load $(BUILD_PRODUCTS_DIR)/libfoo.a 

編集:Xcode 4.6以降、これは不要になったことを確認しましたが、確認していません。

于 2012-10-01T12:55:38.427 に答える
1

そのフラグを削除して、それなしで試してください。それでもうまくいかない場合は、ライブラリごとに --force-load を使用してみてください。

于 2012-10-01T09:26:31.370 に答える
0

David H の答えは基本的に正しいですが、コード サンプルに 2 つのタイプミスがあります。特別な読み込み動作を必要とするライブラリの場合、リンカー パラメータは次のようになります。

-force_load $(BUILT_PRODUCTS_DIR)/libfoo.a 

注: 私のプロジェクト (Xcode 4.6.1 を使用) で同様の状況に遭遇しましたが、どちらも指定されていない (iOS5 と iOS6 の両方を対象としている) 場合でも、アプリはリンクしませ-all_load-force_load

于 2013-03-25T18:56:07.233 に答える