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体系结构的库,请执行以下操作:

为不同的SDK添加不同的体系结构

转到目标 – >构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架构的库。 那编译错误就会消失。