私は独自の静的C++ライブラリを構築しました。これは設定で構築されています:
ライブラリプロジェクトは正常にビルドされ、.aファイルが取得されました(ビルドフォルダーをクリーンアップし、設定を有効にするためにプロジェクトを再度ビルドしました)。
ライブラリ(.aファイル)をiOSプロジェクトに追加しましたが、iOSプロジェクトでまったく同じ設定を設定してもプロジェクトはビルドされません。
このエラーが発生し続けます:
ld:warning:ignoring file /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用に構築されたものではないことを教えてくれますが、それはまさにライブラリを構築した設定です。
ライブラリを作成するときは、シミュレータとデバイスの両方でコンパイルし、2つの出力(.aファイル)を1つのライブラリにマージしてから、iOSプロジェクトにリンクする必要があります。
私自身も同様の問題に遭遇しました。 @graver
のソリューションは間違いなく有効です。
問題は、ライブラリがarmv7
ではなくarmv7s
向けに構築されていたことでした。 lipo <path/to/lib.a> -info
を使用して、これを自分で確認できます。
Build Active Architectures Only
オプションをNo
に設定すると、問題が修正されます。
お役に立てれば。
追加の注意事項は次のとおりです。
Build Active Architectures Only set to no
libプロジェクト用です。
Cocapodを使用した場合、まったく同じエラーが発生しました。私にとっての解決策は、ターゲットとポッド用に2つの異なるBuild Active Architectureを作成することでした。
アプリのターゲット:
Build Active Architectures Only **Yes**
ポッドターゲット
Build Active Architectures Only **No**
残念ながら、これらすべてのアドバイスは役に立たない-Xcode 7.3.1(7D1014)、iPhone5。しかし、すべてのXcode一時ファイルを削除(+ Xcodeを再起動)し、再構築するとすぐに機能した。
CocoaPodsを介して使用されているFacebook SDK(v 4.24.0)で私は偶然起こりました。
ポッドで_Build Active Architectures Only
_をクリーンアップするかNO
に設定しても、問題は解決しませんでした。
解決策は、ビルドディレクトリを空にすることでした(ビルド設定/ビルドの場所/ CONFIGURATION_BUILD_DIRを参照)OR $(CONFIGURATION_BUILD_DIR)
Xcode変数。
XCode 5.1.1を使用して、説明されている問題に遭遇しました。この問題を解決するためのより便利な方法は、(ビルド/アーカイブメニューを使用して)アーカイブを作成して配布することです。配布されたlibファイルには、定義されたすべてのアーキテクチャが含まれます。