【问题标题】:Module complied with swift 5.1 cannot be imported by the swift 5.4 complierswift 5.1编译的模块不能被swift 5.4编译器导入
【发布时间】:2022-01-07 21:45:35
【问题描述】:

我正在尝试按此集成 Clover-Go SDK https://github.com/clover/remote-pay-ios-go

但是得到以下错误“使用 swift 5.1 的模块无法由 swift 5.4 编译器导入”。 我正在使用Xcode 12.5

pod 文件

pod '红蜘蛛', :git => 'https://github.com/daltoniam/Starscream.git', :tag => '3.0.5' 吊舱'GoConnector','3.3.5'

通过谷歌,找到了许多在项目 Target 中设置 Build Libraries for Distribution -> YES 的答案,但它不起作用。

请告知如何才能使应用程序无错误地编译

编辑: 根据一些建议的解决方案,我尝试下载 XCode Toolchains (swift 4.2) 并构建应用程序。

但它失败并出现以下错误

【问题讨论】:

  • 有一个开放的issue 可以突出您的问题。不幸的是,您需要 SDK 的制造商对其进行更新,以便您可以在应用程序中使用它。我建议您与他们联系,也许还可以添加到现有问题中。
  • 那你需要使用之前用 Swift 5.1 编译的版本。
  • @Andrew 我已经尝试了一种可能的方法,但出现错误。你能建议吗
  • 正如我所说,您需要 SDK 的开发人员对其进行更新。我不建议使用旧的工具链,因为即使你让它工作,你在提交到 App Store 时可能会遇到问题,你所做的只是延长你的痛苦。

标签: ios swift xcode clover


【解决方案1】:

Swift 二进制文件在 swift 5.1 和 5.4 之间不兼容(此处的“不兼容”用作真正解释的代理,这很复杂,但对于您的目的来说足够真实)。

所以没有“使这个工作与 5.4 一起工作”来使旧的 5.1 二进制文件可与新的 5.4 代码链接。

您的两种可能的解决方案涉及替换 5.1 代码或 5.4 代码:

  1. 正如 Andrew 所说,让 pod 作者构建一个新的二进制文件,访问代码并自己动手。 (不太可能,pod 作者不为你工作,可能不会只给你他们的代码。)

  2. 改变你的构建,通过改变你的 Xcode 工具链告诉它用不同的 swift 版本构建(可能,不是微不足道的)。见:

https://medium.com/xcblog/switching-swift-versions-inside-xcode-using-toolchains-755b28831c43

【讨论】:

  • 就像你说的我下载了 Xcode Toolchain swift 4.2 ,在 Preferences 中切换到它并构建应用程序,但它失败并出现这些错误。 :0:错误:未知参数:'-enable-library-evolution' :0:错误:未知参数:'-emit-module-interface-path' 命令 CompileSwiftSources 失败,退出代码为非零跨度>
猜你喜欢
  • 2020-02-27
  • 1970-01-01
  • 2020-02-19
  • 2019-09-08
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
相关资源
最近更新 更多