Xcode 5.1和编译x86_64架构的错误

4
昨天我用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模拟器上运行代码时编译没有问题。
可能是由于新的Xcode 5.1功能“更新iOS标准架构设置以包括64位”造成的问题?
也许我应该更改标准架构?还是与PayPal库有关的某些问题?
有人知道如何解决这个问题吗?

1
更新到Xcode 7.1之后,真的吗? - Pawan Rai
2
从目标/构建设置/架构/有效架构中删除arm64可以让我编译项目。但这意味着我没有为64位编译吗? - Gabriel.Massana
2
我认为你正在使用的库不支持arm64架构,请检查是否有更新可用。 - Pawan Rai
1
5.1 抱歉,这是iOS 7.1和Xcode 5.1之间的混淆 :) - Gabriel.Massana
1
是的,我的PayPal库太旧了。 :( - Gabriel.Massana
显示剩余2条评论
5个回答

12

选择应用程序目标的构建设置,选择体系结构,单击其他...,然后 删除$(ARCHS_STANDARD)添加$(ARCHS_STANDARD_32_BIT)

下面是相同的图像在应用程序目标的-> 构建设置-> 架构中

这个修复了我的问题。


9
我认为你正在使用的PayPal库不支持arm64架构。请查看PayPal-iOS-SDK issue-47以获取更新后的PayPal库。
编辑:update link以获取支持arm64的PayPal库。

版本2.0.1现已发布:https://github.com/paypal/PayPal-iOS-SDK/releases,自1.4.1版以来兼容64位。 - Gabriel.Massana

0
如果你只有arm64架构,而且无法获取包含x86_64架构的库文件,可以按照以下步骤操作:

adding different architectures for different SDKs


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"


0
除了Nikita的回答之外,您还可以将参数从“i386”更改为x86_64,以编译与x86_64架构匹配的库。然后编译错误就会消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接