Xcode 5.1和架构x86_64的编译错误
昨天我有一个项目没有问题与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)
该项目包括贝宝图书馆,并正确链接到代码。 它在那里,我可以看到图书馆,所以它不是一个缺less的图书馆。
运行6.1模拟器中的代码可以毫无问题地进行编译。
可能是新的Xcode 5.1function“ 更新iOS标准体系结构设置以包含64位 ”的问题。
也许我应该改变标准的架构? 或者与PayPal库有关的东西?
有人知道如何解决?
我认为你正在使用的贝宝库,不支持arm64。
请检查此PayPal-iOS-SDK问题-47以获取更新的PayPal库。
编辑: – 更新贝宝库的链接 (支持arm64)
select应用程序目标的生成设置,select体系结构,单击其他…并删除$(ARCHS_STANDARD),并添加$(ARCHS_STANDARD_32_BIT)
下面是相同的图像
它解决了我的问题。
我发现这个任务很困难,所以我做了一个video,解释如何从有效的体系结构中删除arm64。 希望能帮助到你!
https://www.youtube.com/watch?v=d-pJLRy4rVk&feature=youtube_gdata_player
如果你只是错过x86_64体系结构(但你有arm64),并且不可能获得包含x86_64体系结构的库,请执行以下操作:
转到目标 – >构build设置 – >链接 – >其他链接器标志添加-ObjC -l“PayPalMobile”-l“Pods-PayPal-iOS-SDK”-l“c ++”-framework“AVFoundation”-framework“AudioToolbox” – 框架“CoreLocation”框架“CoreMedia”框架“MessageUI”框架“MobileCoreServices”框架“SystemConfiguration”
除了Nikita的回答之外,你可以把参数从“i386”改成x86_64
来编译符合x86_64
架构的库。 那编译错误就会消失。