swift - 仅适用于架构 x86_64 模拟器的重复符号

Posted

技术标签:

【中文标题】swift - 仅适用于架构 x86_64 模拟器的重复符号【英文标题】:swift - duplicate symbols for architecture x86_64 Simulator only 【发布时间】:2015-12-16 17:06:15 【问题描述】:

我正在开发具有这些 sdk 的应用程序

pod 'PayPal-ios-SDK'
pod 'Stripe'
pod 'GoogleMaps'
pod 'Parse'
pod 'ParseUI'

自从我启动这个应用程序以来,我正在使用实际设备 (iPhone 5) 对其进行测试,没有出现任何错误。但是早些时候当我尝试在模拟器中运行它时,我收到了这个错误。为什么模拟器有错误,但在实际设备上可以?

duplicate symbol _llvm.cmdline in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskUtility.o)
duplicate symbol _llvm.embedded.module in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskUtility.o)
duplicate symbol _llvm.cmdline in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskConfiguration.o)
duplicate symbol _llvm.embedded.module in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskConfiguration.o)
duplicate symbol _llvm.cmdline in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskLinkerID.o)
duplicate symbol _llvm.embedded.module in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskLinkerID.o)
duplicate symbol _llvm.cmdline in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskComponent.o)
duplicate symbol _llvm.embedded.module in:
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskDeviceData.o)
    /Users/myname/Desktop/MyApp/Pods/PayPal-iOS-SDK/PayPalMobile/libPayPalMobile.a(PPRiskComponent.o)
ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我尝试清理构建文件夹和删除派生数据文件夹。你认为这里的问题是什么?谢谢!

【问题讨论】:

你找到解决方案了吗? 【参考方案1】:

即使我遇到了同样的问题,一些搜索也让我找到了这个。

注释 here 说,

当前版本的 PayPal iOS SDK 是使用 Xcode 7.0+ 构建的。

如果您仍在使用 Xcode 6.2,您可能会遇到链接错误 (重复符号)。如果您无法从 Xcode 6.2 升级,请使用 此 SDK 的 2.10.2 版本。

所以我将我使用的版本更改为 2.11.4(我们开始项目时的版本是 2.11.4)并且它可以工作。

【讨论】:

以上是关于swift - 仅适用于架构 x86_64 模拟器的重复符号的主要内容,如果未能解决你的问题,请参考以下文章

Xcode11 Swift5 框架不包含模拟器的头文件,仅适用于 arm64 和 armv7a

如何在 x86_64 Swift 项目中使用 i386 框架

架构 x86_64 的重复符号(实现 FBSDKCoreKilt)Swift

Swift 测试给出错误“架构 x86_64 的未定义符号”

入口点 (_main) 未定义。对于架构 x86_64 - 仅 XCode UITesting

警告“将架构 arm64 映射到 x86_64”是啥意思?