经典错误: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格式就行。

经典错误:symbol(s) not found for architecture x86_64 || Undefined symbols for architecture x86_64: