Xcode 5.1和架构x86_64的编译错误

时间:2014-03-11 16:20:48

标签: ios objective-c xcode paypal 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)

该项目包含 PayPal库,并且已正确链接到代码中。它就在那里,我可以看到图书馆,所以它不是一个缺少的图书馆。

运行6.1 Simulator中的代码编译没有问题。

新的Xcode 5.1功能可能会出现问题" 更新iOS标准架构设置以包含64位。" ?

也许我应该改变标准架构?或者与PayPal库有关的东西?

有人知道如何解决这个问题吗?

6 个答案:

答案 0 :(得分:11)

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

以下是同一In app Target's -> Build Settings -> Architectures

的图片

它为我解决了这个问题。

答案 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架构的库,请执行以下操作:

adding different architectures for different SDKs

答案 5 :(得分:0)

除了Nikita的回答,您可以更改&#34; i386&#34;到class Weapon1 : MonoBehvaiour { } class Character : MonoBehaviour { void useAbility() { gameObject.AddComponent<Weapon1>(); } } 编译匹配x86_64架构的库。然后编译错误就会消失。