昨天我有一个项目在Xcode 5上运行没有问题。今天,在更新到Xcode 5.1后,我有6个错误而且项目没有编译。
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_PayPal", referenced from:
objc-class-ref in SUAppDelegate.o
objc-class-ref in SUTViewController.o
"_OBJC_CLASS_$_PayPalAdvancedPayment", referenced from:
objc-class-ref in SUTViewController.o
"_OBJC_CLASS_$_PayPalInvoiceData", referenced from:
objc-class-ref in SUTViewController.o
"_OBJC_CLASS_$_PayPalInvoiceItem", referenced from:
objc-class-ref in SUTViewController.o
"_OBJC_CLASS_$_PayPalReceiverPaymentDetails", referenced from:
objc-class-ref in SUTViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
该项目包含 PayPal库,并且已正确链接到代码中。它就在那里,我可以看到图书馆,所以它不是一个缺少的图书馆。
运行6.1 Simulator中的代码编译没有问题。
新的Xcode 5.1功能可能会出现问题" 更新iOS标准架构设置以包含64位。" ?
也许我应该改变标准架构?或者与PayPal库有关的东西?
有人知道如何解决这个问题吗?
答案 0 :(得分:11)
选择应用目标的构建设置,选择体系结构,单击其他...并删除$(ARCHS_STANDARD)和添加$(ARCHS_STANDARD_32_BIT)
以下是同一
的图片它为我解决了这个问题。
答案 1 :(得分:9)
我认为你正在使用的paypal库不支持arm64。
检查此PayPal-iOS-SDK issue-47以获取更新的paypal库。
编辑: - update link for paypal library(支持arm64)
答案 2 :(得分:1)
我发现这项任务很难,所以我制作了一个视频,解释如何从有效的架构中删除arm64。希望它有所帮助!
https://www.youtube.com/watch?v=d-pJLRy4rVk&feature=youtube_gdata_player
答案 3 :(得分:0)
转到目标 - >构建设置 - >链接 - >其他链接器标志添加-ObjC -l“PayPalMobile”-l“Pods-PayPal-iOS-SDK”-l“c ++”-framework“AVFoundation”-framework“AudioToolbox”-framework“CoreLocation”-framework“CoreMedia”-framework“ MessageUI“-framework”MobileCoreServices“-framework”SystemConfiguration“
答案 4 :(得分:0)
如果你只是想念x86_64架构(但是你有arm64)并且它不可能获得包含x86_64架构的库,请执行以下操作:
答案 5 :(得分:0)
除了Nikita的回答,您可以更改" i386"到class Weapon1 : MonoBehvaiour
{
}
class Character : MonoBehaviour
{
void useAbility()
{
gameObject.AddComponent<Weapon1>();
}
}
编译匹配x86_64
架构的库。然后编译错误就会消失。