【问题标题】:Xcode 5.1 and compiling error for architecture x86_64Xcode 5.1 和架构 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库的同样问题。

标签: ios objective-c xcode paypal x86-64


【解决方案1】:

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

下面是相同的图片

它为我解决了这个问题。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    【解决方案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 架构的库。然后编译错误就会消失。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-04-15
            • 1970-01-01
            • 2014-04-28
            • 2012-09-24
            • 2017-03-03
            • 2015-05-31
            • 1970-01-01
            相关资源
            最近更新 更多