链接错误

Undefined symbols

只声明了符号,却未定义符号的具体实现。
分两种情况
1、符号没有具体实现。 2、符号有具体实现,但是链接器并不知道具体实现在哪。

对于第1种情况,需要实现符号定义。

对于第2种情况,我们只有配置好链接就好了。

常见的链接错误情况

libc++

错误形式如下:

Undefined symbols for architecture x86_64:
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for FireflyTLV::TLVEntity in FireflyCrypto(TLVPackage.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "std::__1::__shared_weak_count::~__shared_weak_count()", referenced from:
      std::__1::__shared_ptr_pointer<FireflyTLV::TLVEntity*, std::__1::default_delete<FireflyTLV::TLVEntity>, std::__1::allocator<FireflyTLV::TLVEntity> >::~__shared_ptr_pointer() in FireflyCrypto(TLVPackage.o)
      std::__1::__shared_ptr_pointer<FireflyTLV::TLVEntity*, std::__1::default_delete<FireflyTLV::TLVEntity>, std::__1::allocator<FireflyTLV::TLVEntity> >::~__shared_ptr_pointer() in FireflyCrypto(TLVPackage.o)
  "_inflate", referenced from:
      _unzReadCurrentFile in Minizip(unzip.o)

libz 和 libz2

错误形式如下:

Undefined symbols for architecture x86_64:
  "_inflate", referenced from:
      _unzReadCurrentFile in Minizip(unzip.o)
  "_inflateInit2_", referenced from:
      _unzOpenCurrentFile3 in Minizip(unzip.o)
  "_get_crc_table", referenced from:
      _unzOpenCurrentFile3 in Minizip(unzip.o)
      _zipOpenNewFileInZip3 in Minizip(zip.o)
  "_inflateEnd", referenced from:
      _unzCloseCurrentFile in Minizip(unzip.o)
  "_BZ2_bzReadOpen", referenced from:
      _ff_bs43patch in FireflyUtil(bsdiff43.o)
  "_BZ2_bzRead", referenced from:
      _ff_bs43patch in FireflyUtil(bsdiff43.o)

libsqlite3

错误形式如下:

Undefined symbols for architecture x86_64:
  "_sqlite3_column_bytes", referenced from:
      -[FMResultSet dataForColumnIndex:] in FMDB(FMResultSet.o)
      -[FMResultSet dataNoCopyForColumnIndex:] in FMDB(FMResultSet.o)
  "_sqlite3_column_double", referenced from:
      -[FMResultSet doubleForColumnIndex:] in FMDB(FMResultSet.o)
  "_sqlite3_column_int", referenced from:
      -[FMResultSet intForColumnIndex:] in FMDB(FMResultSet.o)
  "_sqlite3_column_text", referenced from:
      -[FMResultSet kvcMagic:] in FMDB(FMResultSet.o)
      -[FMResultSet stringForColumnIndex:] in FMDB(FMResultSet.o)
      -[FMResultSet UTF8StringForColumnIndex:] in FMDB(FMResultSet.o)
  "_sqlite3_column_name", referenced from:
      -[FMResultSet columnNameToIndexMap] in FMDB(FMResultSet.o)
      -[FMResultSet kvcMagic:] in FMDB(FMResultSet.o)
      -[FMResultSet resultDictionary] in FMDB(FMResultSet.o)
      -[FMResultSet columnNameForIndex:] in FMDB(FMResultSet.o)
  "_sqlite3_column_count", referenced from:
      -[FMResultSet columnCount] in FMDB(FMResultSet.o)
      -[FMResultSet columnNameToIndexMap] in FMDB(FMResultSet.o)
      -[FMResultSet kvcMagic:] in FMDB(FMResultSet.o)
      -[FMResultSet resultDictionary] in FMDB(FMResultSet.o)
      -[FMResultSet stringForColumnIndex:] in FMDB(FMResultSet.o)
      -[FMResultSet dateForColumnIndex:] in FMDB(FMResultSet.o)
      -[FMResultSet dataForColumnIndex:] in FMDB(FMResultSet.o)
      ...
  "_sqlite3_result_error_code", referenced from:
      -[FMDatabase resultErrorCode:context:] in FMDB(FMDatabase.o)
  "_sqlite3_result_error", referenced from:
      -[FMDatabase resultError:context:] in FMDB(FMDatabase.o)
  "_sqlite3_result_text", referenced from:
      -[FMDatabase resultString:context:] in FMDB(FMDatabase.o)
  "_sqlite3_value_blob", referenced from:
      -[FMDatabase valueData:] in FMDB(FMDatabase.o)
  "_sqlite3_result_blob", referenced from:
      -[FMDatabase resultData:context:] in FMDB(FMDatabase.o)
  "_sqlite3_value_bytes", referenced from:

AssetsLibrary.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ALAssetsLibrary", referenced from:
      objc-class-ref in FireflyUI(FireflyImagePickerTool.o)

AVFoundation.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_AVAssetImageGenerator", referenced from:
      objc-class-ref in FireflyUI(FireflySimpleCamera.o)
  "_OBJC_CLASS_$_AVURLAsset", referenced from:
      objc-class-ref in FireflyUI(FireflySimpleCamera.o)

Photos.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_PHAssetCollectionChangeRequest", referenced from:
      objc-class-ref in FireflyUI(FireflyImagePickerManager.o)
  "_OBJC_CLASS_$_PHImageManager", referenced from:
      objc-class-ref in FireflyUI(FireflyImagePickerManager.o)
  "_OBJC_CLASS_$_PHAsset", referenced from:
      objc-class-ref in FireflyUI(FireflyImagePickerManager.o)
  "_OBJC_CLASS_$_PHAssetCollection", referenced from:
      objc-class-ref in FireflyUI(FireflyImagePickerManager.o)
  "_OBJC_CLASS_$_PHFetchOptions", referenced from:
      objc-class-ref in FireflyUI(FireflyImagePickerManager.o)

CoreMedia.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_CMSampleBufferGetImageBuffer", referenced from:
      +[FireflyQRCodeScan imageFromSampleBuffer:] in FireflyScanCode(FireflyQRCodeScan.o)

WebKit.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_WKUserScript", referenced from:
      objc-class-ref in FireflyJSBridge(FireflyWKWebView.o)
  "_OBJC_CLASS_$_WKPreferences", referenced from:
      objc-class-ref in FireflyJSBridge(FireflyJSWKWebViewController.o)

AddressBook.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_ABPersonCreate", referenced from:
      ___65+[FireflyJSBridgePhoneContact addPhoneContact:completionHandler:]_block_invoke in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_ABAddressBookCopyArrayOfAllPeople", referenced from:
      ___65+[FireflyJSBridgePhoneContact addPhoneContact:completionHandler:]_block_invoke in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_ABAddressBookRemoveRecord", referenced from:
      ___65+[FireflyJSBridgePhoneContact addPhoneContact:completionHandler:]_block_invoke in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonLastNameProperty", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonFirstNameProperty", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
      ___65+[FireflyJSBridgePhoneContact addPhoneContact:completionHandler:]_block_invoke in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_ABPersonSetImageData", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonNicknameProperty", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonMiddleNameProperty", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABWorkLabel", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonEmailProperty", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonOrganizationProperty", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_ABRecordCopyValue", referenced from:
      ___65+[FireflyJSBridgePhoneContact addPhoneContact:completionHandler:]_block_invoke in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonAddressStateKey", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_kABPersonHomePageLabel", referenced from:
      +[FireflyJSBridgePhoneContact parse:toContactPerson:] in FireflyJSBridge(FireflyJSBridgePhoneContact.o)
  "_CNCopyCurrentNetworkInfo", referenced from:
      +[FireflyNetworkReachInfo getWifiName] in FireflyNetwork(FireflyNetworkReachInfo.o)

CoreLocation.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_CLLocationManager", referenced from:
      objc-class-ref in FireflyUtil(FireflyLocationManager.o)
  "_kCLLocationAccuracyBest", referenced from:
      -[FireflyLocationManager startLocation] in FireflyUtil(FireflyLocationManager.o)
  "_CLLocationCoordinate2DMake", referenced from:
      _S_FireflyLocationManager_GetCurrentCoordinate in FireflyUtil(FireflyLocationManager.o)

SystemConfiguration.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_CNCopySupportedInterfaces", referenced from:
      +[FireflyNetworkReachInfo getWifiName] in FireflyNetwork(FireflyNetworkReachInfo.o)
  "_SCNetworkReachabilitySetDispatchQueue", referenced from:
      -[firelfy_Reachability_ startNotifier] in FireflyNetwork(firelfy_Reachability_.o)
      -[firelfy_Reachability_ stopNotifier] in FireflyNetwork(firelfy_Reachability_.o)
  "_kCNNetworkInfoKeySSID", referenced from:
      +[FireflyNetworkReachInfo getWifiName] in FireflyNetwork(FireflyNetworkReachInfo.o)
  "_CNCopyCurrentNetworkInfo", referenced from:
      +[FireflyNetworkReachInfo getWifiName] in FireflyNetwork(FireflyNetworkReachInfo.o)
  "_CTRadioAccessTechnologyLTE", referenced from:
      +[FireflyNetworkReachInfo getNetWorkType] in FireflyNetwork(FireflyNetworkReachInfo.o)
  "_SCNetworkReachabilityGetFlags", referenced from:
      ___47-[AFNetworkReachabilityManager startMonitoring]_block_invoke.52 in AFNetworking(AFNetworkReachabilityManager.o)
      +[FireflyNetworkReachInfo getNetWorkType] in FireflyNetwork(FireflyNetworkReachInfo.o)
      -[firelfy_Reachability_ isReachable] in FireflyNetwork(firelfy_Reachability_.o)
      -[firelfy_Reachability_ isReachableViaWWAN] in FireflyNetwork(firelfy_Reachability_.o)
      -[firelfy_Reachability_ isReachableViaWiFi] in FireflyNetwork(firelfy_Reachability_.o)
      -[firelfy_Reachability_ connectionRequired] in FireflyNetwork(firelfy_Reachability_.o)
      -[firelfy_Reachability_ isConnectionOnDemand] in FireflyNetwork(firelfy_Reachability_.o)
      ...
  "_CTRadioAccessTechnologyGPRS", referenced from:
      +[FireflyNetworkReachInfo getNetWorkType] in FireflyNetwork(FireflyNetworkReachInfo.o)
  "_SCNetworkReachabilitySetCallback", referenced from:
      -[AFNetworkReachabilityManager startMonitoring] in AFNetworking(AFNetworkReachabilityManager.o)
      -[firelfy_Reachability_ startNotifier] in FireflyNetwork(firelfy_Reachability_.o)
      -[firelfy_Reachability_ stopNotifier] in FireflyNetwork(firelfy_Reachability_.o)
  "_SCNetworkReachabilityCreateWithAddress", referenced from:
      +[AFNetworkReachabilityManager managerForAddress:] in AFNetworking(AFNetworkReachabilityManager.o)
      +[FireflyNetworkReachInfo getNetWorkType] in FireflyNetwork(FireflyNetworkReachInfo.o)
      +[firelfy_Reachability_ reachabilityWithAddress:] in FireflyNetwork(firelfy_Reachability_.o)
  "_SCNetworkReachabilityCreateWithName", referenced from:
      +[AFNetworkReachabilityManager managerForDomain:] in AFNetworking(AFNetworkReachabilityManager.o)
      +[firelfy_Reachability_ reachabilityWithHostname:] in FireflyNetwork(firelfy_Reachability_.o)
  "_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:
      objc-class-ref in FireflyNetwork(FireflyNetworkReachInfo.o)
      objc-class-ref in FireflyStatistics(UMSCommonMethod.o)
  "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
      -[AFNetworkReachabilityManager stopMonitoring] in AFNetworking(AFNetworkReachabilityManager.o)
  "_OBJC_CLASS_$_QLPreviewController", referenced from:
      _OBJC_CLASS_$_FireflyDocPreviewController in FireflyDocPreview(FireflyDocPreviewController.o)
  "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
      -[AFNetworkReachabilityManager startMonitoring] in AFNetworking(AFNetworkReachabilityManager.o)

AdSupport.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ASIdentifierManager", referenced from:
      objc-class-ref in FireflyUtil(FireflySystemInfo.o)

CoreTelephony.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_CTRadioAccessTechnologyEdge", referenced from:
      +[FireflyNetworkReachInfo getNetWorkType] in FireflyNetwork(FireflyNetworkReachInfo.o)

QuickLook.framework

错误形式如下:

Undefined symbols for architecture x86_64:
  "_OBJC_METACLASS_$_QLPreviewController", referenced from:
      _OBJC_METACLASS_$_FireflyDocPreviewController in FireflyDocPreview(FireflyDocPreviewController.o)

运行错误

unrecognized selector sent to instance

通常,实例instance没有响应selector,也可以说实例instance没有实现方法selector。 其错误栈信息形式如下:

2019-06-25 18:53:33.692863+0800 FFDemo[50209:1541645] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView setFf_size:]: unrecognized selector sent to instance 0x7fcf7b605ab0'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001076d36fb __exceptionPreprocess + 331
    1   libobjc.A.dylib                     0x0000000106c77ac5 objc_exception_throw + 48
    2   CoreFoundation                      0x00000001076f1ab4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   UIKitCore                           0x000000010c0e6c3d -[UIResponder doesNotRecognizeSelector:] + 287
    4   CoreFoundation                      0x00000001076d8443 ___forwarding___ + 1443
    5   CoreFoundation                      0x00000001076da238 _CF_forwarding_prep_0 + 120
    6   FFDemo                              0x000000010637f6e6 -[FireflyDemoMainViewController setupView] + 181
    7   FFDemo                              0x000000010637f4c5 -[FireflyDemoMainViewController viewDidLoad] + 37
    8   FFDemo                              0x000000010637d4e3 -[FFDemoMainViewController viewDidLoad] + 51
    9   UIKitCore                           0x000000010bab843b -[UIViewController loadViewIfRequired] + 1183
    10  UIKitCore                           0x000000010ba1c004 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 68
    11  UIKitCore                           0x000000010ba1c2f7 -[UINavigationController _startTransition:fromViewController:toViewController:] + 146
    12  UIKitCore                           0x000000010ba1d3b5 -[UINavigationController _startDeferredTransitionIfNeeded:] + 896
    13  UIKitCore                           0x000000010ba1e6a7 -[UINavigationController __viewWillLayoutSubviews] + 150
    14  UIKitCore                           0x000000010b9ff38d -[UILayoutContainerView layoutSubviews] + 217
    15  UIKitCore                           0x000000010c5889c1 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1417
    16  QuartzCore                          0x000000010daf9eae -[CALayer layoutSublayers] + 173
    17  QuartzCore                          0x000000010dafeb88 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 396
    18  QuartzCore                          0x000000010db0aee4 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 72
    19  QuartzCore                          0x000000010da7a3aa _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 328
    20  QuartzCore                          0x000000010dab1584 _ZN2CA11Transaction6commitEv + 608
    21  UIKitCore                           0x000000010c0d3ccb __34-[UIApplication _firstCommitBlock]_block_invoke_2 + 128
    22  CoreFoundation                      0x000000010763aaec __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    23  CoreFoundation                      0x000000010763a2b0 __CFRunLoopDoBlocks + 336
    24  CoreFoundation                      0x0000000107634b34 __CFRunLoopRun + 1252
    25  CoreFoundation                      0x0000000107634302 CFRunLoopRunSpecific + 626
    26  GraphicsServices                    0x000000010fcbf2fe GSEventRunModal + 65
    27  UIKitCore                           0x000000010c0baba2 UIApplicationMain + 140
    28  FFDemo                              0x000000010637cde0 main + 112
    29  libdyld.dylib                       0x00000001097a0541 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

引起这个崩溃的常见情况有两个: 1、在代码中以Catagory的形式实现了对应方法,编译打包都没有问题,但是运行是没有加载Catagory方法的符号,导致崩溃。
这种情况,需要在Build Settings -> Linking -> Other Link Flags添加-ObjC

show

2、确实没有实现对应的方法。
这种情况,需要实现对应方法。

Copyright © 民生科技有限公司 2019 all right reserved,powered by Gitbook联系方式: wanglihang@mskj.com
修订时间: 2019-08-02 16:19:33

results matching ""

    No results matching ""