静的ライブラリを構築しています。ビルド設定のアーキテクチャは$(ARCHS_STANDARD)
に設定されています。これはStandard Architectures (armv7, armv7s, arm64)
として表示されます。iOSデバイスを選択し、シミュレーター(iPhone Retinaなど)を使用してlibをビルドします。
2つのビルド(1つは_Debug-iphoneos
_内、もう1つは_Debug-iphonesimulator
_内)があるので、_lipo -create
_を使用して集約ライブラリを作成します。
_lipo -create path/to/first/lib /path/to/second/lib -o MyLib.a
_
このライブラリを別のプロジェクトで使用して、64ビットアーキテクチャのiOSデバイスでシミュレートすると、symbol(s) not found for architecture x86_64
が返されます。 libプロジェクト自体がlibを使用する別のプロジェクトのあるワークスペース内にいるほど、私を本当に怒らせているのは。 64ビットiOSシミュレーターでシミュレーションできます! (その点についてはすべてのシミュレーターとデバイスで)。私は何を間違えていますか?
ノート:
IPhone Retina 64ビットシミュレーターでテストしようとしたときに、アプリの1つで使用しているフレームワークライブラリでこれに遭遇しました。
私は単にx86_64
は、すべてのアーキテクチャ向けに構築し、常に構築するように設定するアーキテクチャとして。魅力を発揮しました。
lipo
ツールは、fat mach-oバイナリを作成できるだけでなく、それらを検査できます:xcrun lipo -info /path/to/libThing.a
これにより、ファイル内のアーキテクチャが出力されます。 lipoを使用してバイナリに参加する前に、これを実行して、期待するアーキテクチャが存在することを確認してください。ファットバイナリ結合の結果に対してこれを実行することもお勧めします。
あなたの場合には次が必要です:
iPhoneSDK構成:armv7、armv7s、arm64
iPhoneSimulatorの構成:i386、x86_64
IPhoneSimulatorビルド製品は、質問に基づいてx86_64バイナリを生成していないようです。ビルド構成を確認します-特に、「アクティブなアーキテクチャのみをビルド」(ONLY_ACTIVE_Arch
)NOに設定する必要があります。デフォルトでは、これはリリースではNOですが、デバッグではYESです。 YESの場合、ビルド製品には1つのアーキテクチャのみが含まれます。
アプリケーションプロジェクトターゲットに移動し、ライブラリ検索パスを確認します。
ライブラリファイルのパスが二重引用符で囲まれていることを確認します。
"$(SRCROOT)/MyAppTest/TestFlight"
二重引用符がない場合は、それらを追加してプロジェクトをコンパイルします。
それがあなたのために働くことを願っています。