使用Swift 4.0编译的模块无法在Swift 4.0.1中导入

时间:2017-10-13 08:53:24

标签: ios swift xcode xcode9 swift4

但是我使用相同的Xcode重新编译了框架,它仍然给我这个错误。

  • 适用于
  • 的基础SDK iOS 11.1
  • Swift语言版本Swift 4.0 for both
  • 不使用Pods / Carthage

我希望有人知道

8 个答案:

答案 0 :(得分:110)

更新:

对于Xcode的发布版本:

使用Xcode 9.1,9.2,9.3,9.4,10等打开使用早期Xcode工具构建的框架的项目时,会出现此错误(以及涉及Swift 4.1,4.2等的类似错误)。 / p>

要解决此问题,请使用Carthage(carthage update --platform iOS),Cocoapods(pod updatepod install)或使用新更新的Xcode工具手动更新和重建框架。更新Xcode时应自动更新这些工具,但如果没有,您可以按照原始答案中列出的步骤进行更新。

您可能还需要清理项目cmd + shift + k以及可能的构建文件夹cmd + option + shift + k,以使Xcode不使用缓存的框架构建。

在某些情况下,您可能还需要删除派生数据文件夹(通过转到Xcode首选项 - >位置 - >派生数据文件夹轻松找到)  (Thanks Stunner

对于Xcode的测试版:

请参阅下面的原始答案,然后按照上述步骤操作。

原始答案:

您可能仍然将xcodebuild工具设置为使用Swift 4.0构建的Xcode 9.0,并且与Xcode 9.1 beta的Swift 4.0.1不兼容。

使用以下命令检查终端:

xcodebuild -version

或者只是进入Xcode首选项 - >位置并检查/更改命令行工具到Xcode 9.1。你应该设置好。

答案 1 :(得分:20)

我的问题是由于没有为Swift 4.0.2编译外部框架。我已经通过Carthage添加了此文件,因此正在运行:

carthage update --platform iOS

然后清理项目cmd + shift + k并构建文件夹cmd + option + shift + k并删除派生数据文件夹(仅将其移至垃圾箱)也适用于我。

答案 2 :(得分:8)

here安装适用于您的特定Xcode版本的Xcode工具链。

Xcode工具链包括编译器,lldb和其他相关工具的副本,这些工具为在特定版本的Swift中工作提供了一致的开发体验。

打开Xcode的首选项,导航到组件>工具链,并选择已安装的Swift工具链。

这将允许您现在编译并运行该应用程序。

答案 3 :(得分:7)

我用Xcode 10 beta解决了这个问题,它添加了Swift 4.2。我的问题与迦太基或任何外部依赖无关。

转到YourTarget > Build Settings > Swift Language Version获取所有Xcode目标。

我的全部都设为Swift 4

添加“复制文件”构建阶段后,我开始收到错误消息

  

:0:错误:使用Swift 4.1.2编译的模块无法由Swift 4.2编译器导入:/Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build /Debug/MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule

     

命令MergeSwiftModule失败,退出代码非零

然后我将每个目标的Swift Language Version设置为Swift 4.2,从而消除了错误。

我不确定为什么首先会发生错误,因为将所有目标都设置为Swift 4应该同样有效。

答案 4 :(得分:4)

就我而言,我下载了xCode 11 Beta版来测试SwiftUI。运行项目时,出现“ Swift 5.0.1编译器无法导入使用Swift 5.1编译的模块:...” 错误。

要解决此问题。我将xCode命令行工具更改为新的xCode 11注释行工具。之后,您可以使用SwiftUI创建新的xcode项目。

Xcode->首选项->位置-> XCode命令行工具

Xcode Commend Line Tool

我希望,这对希望使用新框架进行测试的人有所帮助:)

答案 5 :(得分:3)

就我而言(Xcode 9.2):

我去了Xcode Preferences > Locations > Derived Data

然后我删除了数据并做了一个干净的构建并且没问题。

答案 6 :(得分:1)

就我而言,我使用带有插件cocoapods-binary的CocoaPods将库预构建为二进制文件。将Xcode从10升级到11后,Xcode给我这个错误:

Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler

我通过删除/Pods目录并运行pod install来解决此问题。

答案 7 :(得分:0)

就我而言,我用它抱怨的任何版本重新编译了框架。

要重新编译,请运行pod update或更新carthage(您使用的是哪个),然后构建项目。

然后在finder中搜索框架。将theFramework.framework复制粘贴到您的项目中,并确保“如果需要复制项目。”再次构建项目,它应该可以工作。