Xcode纯Swift应用导入exp_lib提示“No such module”的原因排查
Swift静态库
import失败的排查解决要点 - 静态库产物不完整:Swift静态库不能只靠
.a文件,必须配套模块映射文件(module.modulemap)和Swift接口文件(.swiftinterface)。你只导入了.a,编译器缺失这些文件就无法识别模块,自然import报错。 - 补充必要文件并配置路径:
- 回到静态库项目,编译后在产物目录里找到
exp_lib.swiftmodule文件夹(里面包含对应架构的.swiftinterface和.swiftdoc文件),同时确认是否生成了module.modulemap文件。 - 将这些文件和
.a一起拖入主项目,或者在主项目的Build Settings > Swift Compiler - Search Paths中配置Import Paths,指向存放modulemap文件的目录。
- 回到静态库项目,编译后在产物目录里找到
import语句无需修改:import exp_lib是正确的,只要静态库的模块名和项目名称一致就没问题,重点是让编译器能找到模块的描述文件。- 检查架构兼容性:确保静态库编译的架构(比如arm64、x86_64)和主项目的目标架构完全匹配,架构不兼容也会导致模块识别失败。
- 修正Build Phases配置:
- 确认
.a已添加到Link Binary With Libraries,但不要把静态库或module相关文件加到Copy Bundle Resources里(静态库不需要拷贝到应用bundle)。 - 如果静态库依赖了其他系统框架,主项目也要在
Link Binary With Libraries中添加对应的依赖框架。
- 确认
内容的提问来源于stack exchange,提问作者Doug Null
相关产品推荐
相关产品推荐

