迁移到swift3后,sqlite报错 Could not build Objective-C module 'sqlite3'
我什么内容都没改.是一个教程里的示例代码,直接打开的话不报错, 但是如果在打开的时候选择迁移到swift3.0,就报错提示:Could not build Objective-C module 'sqlite3'
迁移到swift3后,sqlite报错 Could not build Objective-C module 'sqlite3'
我什么内容都没改.是一个教程里的示例代码,直接打开的话不报错, 但是如果在打开的时候选择迁移到swift3.0,就报错提示:Could not build Objective-C module 'sqlite3'
1 回答2.4k 阅读✓ 已解决
1 回答1.7k 阅读
1 回答1.4k 阅读
1 回答790 阅读
问题描述信息太少了,不太清楚题主具体的工程环境是怎样的,以下供参考,应该能解决问题
在纯的
Swift
环境中,如果要引用其他的C
或Objectice-C
的代码目前已知的有两种方式:桥接头文件。仅适用于
Xcode
环境modulemap 文件。适用于
Xcode
、Swift Package Manager
等各种环境。(主要是clang/llvm
在起作用)桥接头文件
桥接头文件(Bridging Header)。是 Xcode 提供的比较简单的方案,来解决在同一个工程当中
Swift
引用Objective-C
和C
的问题。题主要的应该不是这种方式,就不做说明了!需要也可以参考这个博客 【iOS开发】Swift、OC 混编用到的 Bridging-Header.h
modulemap
这个才是重点!
modulemap
简单来说是Swift
使用的一个模块描述文件,与Bridging Header
相比它并不能应用于同一个工程里面的混编应用,而是使用模块(Module/Framework)的方式来导入进Swift
工程。更详细可以参考:Module System of Swift (简析 Swift 的模块系统)
解决参考
知识点终于搬运完成了。截图里面的意思应用是使用的第二种方式来导入
sqlite3
这个库。如果是出现了这个问题可以检查下:
Building Setting -> Import Paths
对于modulemap
的路径是否正确检查
modulemap
里面内容是否正确modulemap
里面引用的sqlite3
的库是否有效随便附上
Vapor/CSQLite
的modulemap
其它参考:
Swift and Objective-C in the Same Project
Getting Started Using C Libraries from Swift