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

kdfy810k  于 2023-03-11  发布在  Swift
关注(0)|答案(9)|浏览(208)

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

  • 两者均适用的基础SDK iOS 11.1
  • Swift语言版本Swift 4.0适用于两者
  • 未使用Pod/Carthage

我希望有人知道

9nvpjoqh

9nvpjoqh1#

更新日期:

  • 对于Xcode的发行版本:*

当使用Xcode 9.1、9.2、9.3、9.4、10等打开一个使用早期Xcode工具构建的框架的项目时,会发生此错误(以及涉及Swift 4.1、4.2等的类似错误)。
要解决这个问题,请使用Carthage(carthage update --platform iOS)、Cocoapods(pod updatepod install)更新和重建框架,或者使用新更新的Xcode工具手动更新。这些工具应该会在更新Xcode时自动更新,但如果没有,您可以按照下面原始答案中列出的步骤操作。
您可能还需要清理您的项目cmd + shift + k以及构建文件夹cmd + option + shift + k,以使Xcode不使用缓存的框架构建。
在某些情况下,您可能还需要删除您的衍生数据文件夹(很容易找到Xcode首选项-〉位置-〉衍生数据文件夹(Thanks Stunner

  • 对于Xcode的测试版:*

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

原始答复:

您可能仍然将xcodebuild工具设置为Xcode 9.0,它使用Swift 4.0构建,与Xcode 9.1 beta的Swift 4.0.1不兼容。
使用以下命令签入终端:

xcodebuild -version

或者直接进入Xcode首选项-〉位置,检查/更改命令行工具为Xcode 9. 1。然后就应该设置好了。

cyej8jka

cyej8jka2#

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

carthage update --platform iOS

然后清理项目cmd + shift + k和构建文件夹cmd + option + shift + k,并删除派生数据文件夹(也只是将其移到垃圾桶),这对我很有效。

deyfvvtc

deyfvvtc3#

在我的例子中,我下载了xCode 11 Beta版本来测试SwiftUI。当我运行我的项目时,我得到了**“用Swift 5. 1编译的模块无法被Swift 5. 0. 1编译器导入:..."**错误。
为了解决这个问题,我将xCode命令行工具更改为新的xCode 11注解行工具。之后,您可以使用SwiftUI创建新的xcode项目。

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

我希望,这将有助于有人谁想要测试与新的freamework:)

t5fffqht

t5fffqht4#

安装Xcode工具链的特定Xcode版本,这是为您工作从这里。
Xcode工具链包括编译器、lldb和其他相关工具的副本,这些工具可以为在特定版本的Swift中工作提供一致的开发体验。
打开Xcode的首选项,导航到组件〉工具链,然后选择安装的Swift工具链。
这将允许您现在编译和运行应用程序。

jdg4fx2g

jdg4fx2g5#

我在Xcode 10 beta中遇到了这个问题,它添加了Swift 4. 2。我的问题与Carthage或任何外部依赖无关。
转到YourTarget > Build Settings > Swift Language Version获取所有Xcode目标。
我的都设置为Swift 4
在添加了一个复制文件构建阶段之后,我开始得到这个错误
:0:错误:Swift 4.2编译器无法导入Swift 4.1.2编译的模块:/用户/用户/库/开发人员/Xcode/派生数据/我的应用程序-faskfrihumfcdibjxisjvbfshppp/构建/中间体.noindex/我的应用程序.构建/调试/我的应用程序扩展.构建/对象-正常/x86_64/我的类~部分.swiftmodule
命令MergeSwiftModule失败,退出代码为非零
然后,我将每个目标的Swift Language Version设置为Swift 4.2,这样就消除了错误。
我不知道为什么错误会发生在第一位,虽然,有所有的目标设置为Swift 4应该同样有效。

f0brbegy

f0brbegy6#

在我的例子中(Xcode 9.2):
我去了Xcode Preferences > Locations > Derived Data
然后我删除了数据,并做了一个干净的构建,并确定。

fcg9iug3

fcg9iug37#

在我的例子中,我使用CocoaPods和cocoapods-binary插件将库预构建为二进制文件。在我将Xcode从10升级到11后,Xcode给我这个错误:

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

我通过删除/Pods目录并运行pod install来修复它。

deyfvvtc

deyfvvtc8#

在我的例子中,我用它抱怨的任何版本重新编译了框架。
要重新编译,请运行pod update或更新carthage(无论您使用哪一个),然后构建项目。
然后在finder中搜索框架,将theFramework.framework复制粘贴到您的项目中,并确保“Copy items if needed“。再次构建项目,它应该可以工作。

x759pob2

x759pob29#

我用几个基本步骤解决了这个问题

  • Close Xcode
  • pod deintegrate
  • Open Xcode workspace
  • Command + Shift + K-清洁
  • Command + B-内部版本

相关问题