首页 > 解决方案 > 更新到 Swift 4.2 后的 Xcode 构建错误 - 架构 arm64 的未定义符号

问题描述

我正在尝试构建一个自去年 6 月以来我没有接触过的 Xcode iOS 项目。我知道包和 Swift 4.2 有一些更新,但我遇到了很多错误。

首先,我得到了一个类似于的库未加载错误,但对于 RestKit。我将它添加到我的 pods 文件中并将其包含在Link Binary with Libraries. 然后我收到了这个错误信息。

Ld /Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/BuddyV2.app/BuddyV2 normal arm64 (in target: BuddyV2)
    cd /Users/arkwl/Desktop/Workstation/OfficeBuddy/BuddyV2
    export IPHONEOS_DEPLOYMENT_TARGET=11.3
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk -L/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/FirebaseAuth -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/FirebaseCore -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/FirebaseDatabase -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/FirebaseStorage -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/GTMSessionFetcher -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/GoogleUtilities -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/ISO8601DateFormatterValueTransformer -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/JSQMessagesViewController -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/JSQSystemSoundPlayer -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/RKValueTransformers -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/RestKit -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/SOCKit -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/SwiftInstagram -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/SwiftyJSON -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/TransitionKit -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/leveldb-library -F/Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/nanopb -F/Users/arkwl/Desktop/Workstation/OfficeBuddy/BuddyV2/Pods/FirebaseAnalytics/Frameworks -F/Users/arkwl/Desktop/Workstation/OfficeBuddy/BuddyV2/Pods/FirebaseInstanceID/Frameworks -F/Users/arkwl/Desktop/Workstation/OfficeBuddy/BuddyV2/Pods/GoogleAppMeasurement/Frameworks -F/Users/arkwl/Desktop/Workstation/OfficeBuddy/BuddyV2/Carthage/Build/iOS -filelist /Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Intermediates.noindex/BuddyV2.build/Debug-iphoneos/BuddyV2.build/Objects-normal/arm64/BuddyV2.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=11.3 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Intermediates.noindex/BuddyV2.build/Debug-iphoneos/BuddyV2.build/Objects-normal/arm64/BuddyV2_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fembed-bitcode-marker -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Xlinker -add_ast_path -Xlinker /Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Intermediates.noindex/BuddyV2.build/Debug-iphoneos/BuddyV2.build/Objects-normal/arm64/BuddyV2.swiftmodule -ObjC -lc++ -licucore -lsqlite3 -lz -framework CFNetwork -framework FIRAnalyticsConnector -framework FirebaseAnalytics -framework FirebaseAuth -framework FirebaseCore -framework FirebaseCoreDiagnostics -framework FirebaseDatabase -framework FirebaseInstanceID -framework FirebaseStorage -framework Foundation -framework GTMSessionFetcher -framework GoogleAppMeasurement -framework GoogleUtilities -framework ISO8601DateFormatterValueTransformer -framework JSQMessagesViewController -framework JSQSystemSoundPlayer -framework MobileCoreServices -framework RKValueTransformers -framework RestKit -framework SOCKit -framework Security -framework StoreKit -framework SwiftInstagram -framework SwiftyJSON -framework SystemConfiguration -framework TransitionKit -framework leveldb -framework nanopb -framework RestKit -framework LanguageTranslatorV2 -framework SpeechToTextV1 -framework TextToSpeechV1 -framework AssistantV1 -framework PersonalityInsightsV3 -framework Starscream -framework ConversationV1 -framework VisualRecognitionV3 -framework NaturalLanguageUnderstandingV1 -framework DiscoveryV1 -framework ToneAnalyzerV3 -framework NaturalLanguageClassifierV1 -framework Pods_BuddyV2 -Xlinker -dependency_info -Xlinker /Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Intermediates.noindex/BuddyV2.build/Debug-iphoneos/BuddyV2.build/Objects-normal/arm64/BuddyV2_dependency_info.dat -o /Users/arkwl/Library/Developer/Xcode/DerivedData/BuddyV2-gubyodomquayvxabpgpfpalrnftx/Build/Products/Debug-iphoneos/BuddyV2.app/BuddyV2

Undefined symbols for architecture arm64:
  "type metadata for RestKit.JSON", referenced from:
      type metadata accessor for Swift._HashableTypedNativeDictionaryStorage<Swift.String, RestKit.JSON> in SupportViewController.o
      type metadata accessor for (Swift.String, RestKit.JSON) in SupportViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我试图查看 SupportViewController.swift 以查看是否有任何可能导致它但没有找到任何东西。另外我不知道如何使用 -v 来查看调用。这可能是什么原因造成的?该项目之前运行良好,我认为更新可能会搞砸一些事情。

这是控制器的要点:https ://gist.github.com/arkwl/8bcf492cef2e8408852d1be98172b7b7

我还尝试将链接器标志添加到 pods 项目中,此处提到:https ://stackoverflow.com/a/26903572/4672331

是的,我确实尝试过重建。

标签: iosswiftxcodecocoapodslinker-errors

解决方案


唔。这里有一些可能性,但最有可能的是 RestKit 框架没有在您的代码之前构建。您当然应该(如评论中所建议的那样)import RestKit在任何使用它的源代码中声明。但对我来说,这个错误是说它找不到框架。所以我会回顾一下构建 RestKit 的日志部分,并确保这样做没有错误。

一般来说,除非框架 doco 要求这样做,否则您不需要修改任何链接器标志。在框架搜索路径中没有正确的框架路径是此类问题的更常见来源。

您还提到了加载框架图像的较早问题。这通常在您的应用程序启动期间实际尝试加载框架时出现。最常见的原因是框架已被链接以进行编译,但未复制到应用程序包中以进行部署。

因此,我建议查看 RestKit 框架的构建位置以及构建方式(Carthage 或 CocoaPods 或其他)、框架搜索路径设置中指定的路径以及框架如何添加到应用程序中。


推荐阅读