0

静的ライブラリを実装し、プロジェクトで使用しようとしています。ライブラリは適切にコンパイル/ビルドされていますが、.a ファイルと .h ファイルをそれぞれインポートした後にプロジェクトを実行しようとすると、次のエラーが発生しました。

ld: warning: ignoring file Lib.a, file was built for archive which is not the architecture being linked (i386)

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_MFourInOneStaticLib", referenced from:
      objc-class-ref in MAppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

アーキテクチャは確認済みです。さらに、テスト目的でシミュレータを使用しています。

4

1 に答える 1

2

libに適切なアーキテクチャが含まれていないようです。

iOS の場合は armv7 が必要で、シミュレーターの場合は i386 が必要です。

それをテストする

lipo -info %NAME%

多くの場合、リポはいずれかのアームまたは x86 用にのみ作成されます

両方のアーチ用にビルドしてから、2 つのファイルを結合します

lipo ./build/Release-iphoneos/%NAME% ./build/Release-iphonesimulator/%NAME% -output ./Dist/lib/%NAME% -create
于 2012-11-20T11:00:15.413 に答える