【问题标题】:Xcode: ld: 275 duplicate symbols for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)Xcode:ld:架构arm64 clang的275个重复符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
【发布时间】:2017-02-05 12:28:15
【问题描述】:

我正在尝试归档我的项目,以便将其提交到应用商店。它构建时没有错误或警告,但是当我存档它时,我得到:

ld:架构 arm64 的 275 个重复符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

如果有人有任何想法,请告诉我!我尝试将 GCC_NO_COMMON_BLOCKS 从 YES 设置为 NO 以及从其他链接标志中删除 -ObjC 。

而且所有导入的都是 .h 没有 .m 的

CocoaPod 文件

platform :ios, '8.0'
target “” do
source 'https://github.com/CocoaPods/Specs.git'
pod 'RCTMapboxGL', :path => '../node_modules/react-native-mapbox-gl/ios'
pod 'React', :path => ‘../node_modules/react-native'
pod 'React/RCTGeolocation', :path => ‘../node_modules/react-native'
pod 'React/RCTImage', :path => ‘../node_modules/react-native'
pod 'React/RCTNetwork', :path => ‘../node_modules/react-native'
pod 'React/RCTText', :path => ‘../node_modules/react-native'
pod 'React/RCTWebSocket', :path => ‘../node_modules/react-native'
pod 'AWSCore'
pod 'AWSAutoScaling'
pod 'AWSCloudWatch'
pod 'AWSDynamoDB'
pod 'AWSEC2'
pod 'AWSElasticLoadBalancing'
pod 'AWSKinesis'
pod 'AWSLambda'
pod 'AWSMachineLearning'
pod 'AWSMobileAnalytics'
pod 'AWSS3'
pod 'AWSSES'
pod 'AWSSimpleDB'
pod 'AWSSNS'
pod 'AWSSQS'
pod 'AWSCognito'
pod 'AWSCognitoIdentityProvider'
end

【问题讨论】:

  • 错误表明您正在链接 libReact.a 和 libRCTWebSocket.a 并且它们都包含相同的类:RCTWebSocketModule。
  • 是的!!!!就是它们包含在 reactlib.a 中,我刚刚删除了额外的链接并且它起作用了。谢谢你。请回答问题,我会给你支票!
  • 你可以在这里找到你想要的东西stackoverflow.com/a/46678210/988941

标签: xcode reactjs compiler-errors cocoapods


【解决方案1】:

来自cmets:

错误表明您正在链接 libReact.a 和 libRCTWebSocket.a 并且它们都包含相同的类:RCTWebSocketModule。

【讨论】:

  • 所以这可以存档它,但是现在当我运行它时,反应告诉我本机模块不能为空。有任何想法吗?如果我将它们从链接中删除,它将摆脱警告,但我的应用程序将无法运行:/ 我正在将它们从链接的框架/库中删除
  • 我不明白“本机模块不能为空”这句话。你能用实际的错误信息更新你的问题吗? (是否有可能针对不同的配置有不同的链接设置?)
  • 所以我在尝试归档时使用 react-native,但出现上述错误。为了修复该存档错误,我删除了链接框架和库中的附加内容。这修复了我的存档错误,但是现在这些模块不再正确链接,因此 react-native 认为本机模块为空?所以我不认为我可以从那里删除它们。我不确定他们还会在哪里联系。有任何想法吗?像 rnpm 这样的东西会链接它们吗?那么 xcode 会尝试重新链接它们吗?
  • 你是构建 libRCTWebSocket.a 还是第三方的东西?如果您构建它,答案似乎是不将 RCTWebSocketModule 放入其中,而是从 libReact 中获取它。
  • 目前在 xcode 中我正在构建它,但我相信 cocoapods 可能也在构建它。我还在学习 cocoapods。我将在 1 秒内将我的 pods 文件放在上面
【解决方案2】:

在 podfile 中,尝试删除行

pod 'React/RCTGeolocation', :path => ‘../node_modules/react-native'
pod 'React/RCTImage', :path => ‘../node_modules/react-native'
pod 'React/RCTNetwork', :path => ‘../node_modules/react-native'
pod 'React/RCTText', :path => ‘../node_modules/react-native'
pod 'React/RCTWebSocket', :path => ‘../node_modules/react-native'

只需保留核心“React”行,即

pod 'React', :path => ‘../node_modules/react-native'

然后再次运行“pod install”。

看起来 RCTWebsocket 已经包含在您的项目中,因此再次从 podfile 安装会导致错误。

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多