Xcode 5.1 和架构 x86_64 的编译错误

Posted

技术标签:

【中文标题】Xcode 5.1 和架构 x86_64 的编译错误【英文标题】:Xcode 5.1 and compiling error for architecture x86_64 【发布时间】:2014-04-15 08:27:17 【问题描述】:

昨天我有一个项目在使用 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 库相关的东西?

有人知道怎么解决吗?

【问题讨论】:

“更新到 Xcode 7.1 之后”真的吗? 从 Target / Build Settings / Architectures / Valid Architectures 中删除 arm64 允许我编译项目。但这意味着我不是为 64 位编译的? 我认为您使用的库不支持 arm64。检查其更新是否可用。 5.1 抱歉,这是 iOS 7.1 和 Xcode 5.1 的混合 :) 检查这个link,它报告了paypal库的同样问题。 【参考方案1】:

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

下面是相同的图片

它为我解决了这个问题。

【讨论】:

【参考方案2】:

我认为您使用的贝宝库不支持 arm64。

查看PayPal-iOS-SDK issue-47 获取更新的贝宝库。

编辑 :- update link 用于 paypal 库(支持 arm64)

【讨论】:

版本 2.0.1 可用:github.com/paypal/PayPal-iOS-SDK/releases 自 1.4.1 起兼容 64 位【参考方案3】:

我自己发现这项任务很困难,所以我制作了一个视频来解释如何从有效架构中删除 arm64。希望对您有所帮助!

https://www.youtube.com/watch?v=d-pJLRy4rVk&feature=youtube_gdata_player

【讨论】:

【参考方案4】:

转到 Targets -> Build Settings -> Linking -> Other Linker Flags 添加 -ObjC -l"PayPalMobile" -l"Pods-PayPal-iOS-SDK" -l"c++" -framework "AVFoundation" -framework " AudioToolbox" -framework "CoreLocation" -framework "CoreMedia" -framework "MessageUI" -framework "MobileCoreServices" -framework "SystemConfiguration"

【讨论】:

【参考方案5】:

如果您只是错过了 x86_64 架构(但您有 arm64)并且无法获得包含 x86_64 架构的库,请执行以下操作:

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于Xcode 5.1 和架构 x86_64 的编译错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS - Xcode升级到5.1& iOS升级到iOS7.1问题:Undefined symbols for architecture x86_64

Undefined symbols for architecture x86_64

Undefined symbols for architecture x86_64

终端中的“架构 x86_64 的未定义符号”,但 xcode 中没有错误

Zbar SDK - 缺少所需的架构 x86_64

(转)xcode报错:Undefined symbols for architecture x86_64