經典錯誤:symbol(s) not found for architecture x86_64 || Undefined symbols for architecture x86_64:

記錄經典,防止踩坑!!!!!

 

真機可以運行,模擬器報錯。

錯誤信息顯示如下:

Ld /Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Products/Debug-iphonesimulator/G42PayBucketDemo.app/G42PayBucketDemo normal x86_64 (in target 'G42PayBucketDemo' from project 'G42PayBucketDemo')
    cd /Users/lyj/Desktop/sdk\ 製作/G42PayBucketDemo
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios11.0-simulator -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator13.1.sdk -L/Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Products/Debug-iphonesimulator -F/Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Products/Debug-iphonesimulator -F/Users/lyj/Desktop/sdk\ 製作/G42PayBucketDemo/G42PayBucketDemo -filelist /Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Intermediates.noindex/G42PayBucketDemo.build/Debug-iphonesimulator/G42PayBucketDemo.build/Objects-normal/x86_64/G42PayBucketDemo.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Intermediates.noindex/G42PayBucketDemo.build/Debug-iphonesimulator/G42PayBucketDemo.build/Objects-normal/x86_64/G42PayBucketDemo_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Intermediates.noindex/G42PayBucketDemo.build/Debug-iphonesimulator/G42PayBucketDemo.build/G42PayBucketDemo.app-Simulated.xcent -framework G42SDKCoreKit -framework UIKit -framework G42PayBucket -framework Foundation -Xlinker -dependency_info -Xlinker /Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Intermediates.noindex/G42PayBucketDemo.build/Debug-iphonesimulator/G42PayBucketDemo.build/Objects-normal/x86_64/G42PayBucketDemo_dependency_info.dat -o /Users/lyj/Library/Developer/Xcode/DerivedData/G42PayBucketDemo-gtrplkdamuwrabcpmyhxodgbqlgw/Build/Products/Debug-iphonesimulator/G42PayBucketDemo.app/G42PayBucketDemo

ld: warning: ignoring file /Users/lyj/Desktop/sdk 製作/G42PayBucketDemo/G42PayBucketDemo/G42PayBucket.framework/G42PayBucket, missing required architecture x86_64 in file /Users/lyj/Desktop/sdk 製作/G42PayBucketDemo/G42PayBucketDemo/G42PayBucket.framework/G42PayBucket (3 slices)
Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_G42PayUser", referenced from:
      objc-class-ref in ViewController.o
      objc-class-ref in TestLoginViewController.o
      objc-class-ref in TestSendTransferViewController.o
  "_OBJC_CLASS_$_G42PayBucket", referenced from:
      objc-class-ref in ViewController.o
      objc-class-ref in TestReceiveTransferViewController.o
      objc-class-ref in TestLoginViewController.o
      objc-class-ref in TestSendTransferViewController.o
      objc-class-ref in TestScanCodeViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

 

 

 

網上查了好多文章,大部分說是路徑問題

1.項目中含有靜態庫

可能是該靜態庫不支持在模擬器下編譯,可使用真機或Generic iOS Device,一般就不會出現這個錯誤了;

2.缺少文件引用

從錯誤信息的""_OBJC_CLASS_$_FMDataBase",referenced from:"能夠看出,是缺少FMDataBase文件的引用;

解決方法:

在Build Phases-->Compile Sources(items)中,添加報錯的.m文件,點左下角的"+",在彈出框中找到報錯的.m文件,選中,add
 

這種之類的

 

解決辦法:

在自制的G42PayBucket.framework中,TARGET--》BuildSetting--》Valid Architectures中添加x86_64;如下圖所示。

具體原因,真機arm格式,模擬器x87格式,所以G42PayBucket.framework不支持。添加x86_64格式就行。

x86