XCode 5プロジェクトでは、REST通信にRestKitを使用しています。シミュレーターではすべて正常に機能しますが、ipaファイルを生成すると、次のエラーが発生します。
ld: warning: ignoring file /Users/joseph/Library/Developer/Xcode/DerivedData/XXXXXXXXXX-gdwdekevxtdfivfpsnmyykeqhulk/Build/Products/Debug-iphoneos/libRestKit.a, missing required architecture arm64 in file /Users/joseph/Library/Developer/Xcode/DerivedData/XXXXXXXXXXXXX-gdwdekevxtdfivfpsnmyykeqhulk/Build/Products/Debug-iphoneos/libRestKit.a (2 slices)
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_RKRelationshipMapping", referenced from:
objc-class-ref in classname-xxx.o
"_OBJC_CLASS_$_RKObjectMapping", referenced from:
objc-class-ref in classname-xxx.o
"_OBJC_CLASS_$_RKRequestDescriptor", referenced from:
objc-class-ref in classname-xxx.o
"_OBJC_CLASS_$_RKObjectManager", referenced from:
objc-class-ref in classname-xxx.o
"_OBJC_CLASS_$_RKResponseDescriptor", referenced from:
objc-class-ref in classname-xxx.o
"_RKStatusCodeIndexSetForClass", referenced from:
-[classname-xxx classname-Method] in classname-xxx.o
-[classname-xxx classname-Method] in classname-xxx.o
-[classname-xxx classname-Method] in classname-xxx.o
-[classname-xxx classname-Method] in classname-xxx.o
-[classname-xxx classname-Method] in classname-xxx.o
"_RKMIMETypeJSON", referenced from:
-[classname-xxxinitWithURLBase:timeOut:] in classname-xxx.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation).
RestKitプロジェクトで、「ビルド設定」->「アーキテクチャ」で「標準アーキテクチャ(ARMv7、armv7s)」を標準アーキテクチャ(64ビットを含む)(ARMv7、armv7s、arm64)オプションで変更すると、すべてが正常にコンパイルされます。これは正しいですか?、結果は表示されません。他の設定を変更する必要があります。
これは、64ビット(iPhone 5s)でもプロジェクトを構築していることを意味し、心配する必要はありません。詳細については、このリンクを参照してください: Xcode5およびiOS7:アーキテクチャと有効なアーキテクチャ
No
に設定しますRestKitプロジェクト->ビルド設定->アーキテクチャを標準アーキテクチャ(armv7、armv7s、arm64)に変更するだけです。その後、すべてが機能するはずです。
これは私のために働いた:
ios sdk 9.3
app.xcodeprojのビルド設定に有効なアーキテクチャ:armv7 armv7sビルドアクティブアーキテクチャ:いいえ
きれいにして構築し、私のために働いた。
私の場合、プロジェクトにsqliteライブラリを追加するのを忘れていました。リンクされたフレームワークとライブラリからライブラリを追加した後、ビルドは成功しました。
AVPictureInPictureControllerを実装する際に同じ/同様の問題が発生しました。問題は、プロジェクトでAVKitフレームワークをリンクしていないことでした。
エラーメッセージは次のとおりです。
アーキテクチャarmv7の未定義のシンボル:
"_OBJC_CLASS_$_AVPictureInPictureController",
referenced from:
objc-class-ref in yourTarget.a(yourObject.o)
ld: symbol(s) not found for architecture armv7
clang:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)解決策:
プロジェクトに移動しますターゲットを選択します次にビルドフェーズに移動しますライブラリを使用してリンクバイナリを開きます最後に、+ AVKitフレームワーク/その他のフレームワークを追加します。うまくいけば、これは私が持っていた同様の問題に遭遇している他の誰かを助けるでしょう。