42

私は独自の静的 C++ ライブラリを構築しました。これは次の設定で構築されています。

  • アーキテクチャ: armv7、armv7s
  • アクティブなアーキテクチャのみをビルド: いいえ
  • 対応プラットフォーム: iOS
  • 有効なアーキテクチャ: armv7、armv7s

ライブラリ プロジェクトは正常にビルドされ、.a ファイルを取得しました (ビルド フォルダーを消去し、プロジェクトを再度ビルドして、設定が有効であることを確認しました)。

ライブラリ (.a ファイル) を iOS プロジェクトに追加しましたが、iOS プロジェクトでまったく同じ設定を行ったにもかかわらず、プロジェクトがビルドされません。

  • アーキテクチャ: armv7s、armv7
  • アクティブなアーキテクチャのみをビルド: はい
  • 対応プラットフォーム: iOS
  • 有効なアーキテクチャ: armv7、armv7s

このエラーが発生し続けます:

ld: 警告: ファイル/Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a を無視します。ファイルは、リンクされているアーキテクチャではないアーカイブ用にビルドされました (armv7s) : /Users/hidden/Library/Developer/Xcode/DerivedData/HelloWorldCppLib-fomvvtklwijvqicyhahxleiscein/Build/Products/Debug-iphoneos/libHelloWorldCppLib.a

私は何が欠けていますか?.a ファイルは armv7s 用にビルドされていないことがわかりますが、それはまさに私がライブラリをビルドした設定です。

4

7 に答える 7

36

私も同様の問題に遭遇しました。@graverの解決策は間違いなく有効です。

問題は、ライブラリがarmv7ではなく のためにビルドされていたことですarmv7s。を使用して、これを自分で確認できますlipo <path/to/lib.a> -info

この問題を修正するBuild Active Architectures Onlyオプションを設定します。No

お役に立てれば。

于 2013-06-22T03:09:05.823 に答える
33

ライブラリをビルドするときは、シミュレータとデバイスの両方でコンパイルし、2 つの出力 (.a ファイル) を 1 つのライブラリにマージしてから、iOS プロジェクトにリンクする必要があります。

于 2013-02-12T08:56:47.900 に答える
7

cocapods を使用した場合、まったく同じエラーが発生しました。

アプリのターゲット:

Build Active Architectures Only  **Yes**

ポッド ターゲット

Build Active Architectures Only  **No**
于 2015-12-16T17:48:25.650 に答える
2

残念ながら、これらのアドバイスはすべて私にはうまくいきません - Xcode 7.3.1 (7D1014)、iPhone 5。しかし、すべての Xcode 一時ファイルを削除し (+ Xcode を再起動)、再構築するとすぐに機能するようになりました。

于 2016-08-18T05:32:03.737 に答える
1

CocoaPods 経由で使用される Facebook SDK (v 4.24.0) で発生しました。

ポッドをクリーニングまたは設定Build Active Architectures OnlyNOても、問題は解決しませんでした。

解決策は、ビルド ディレクトリ (ビルド設定/ビルドの場所/CONFIGURATION_BUILD_DIR を参照) または$(CONFIGURATION_BUILD_DIR)Xcode 変数を空にすることでした。

于 2017-06-27T08:00:55.127 に答える