Macos Swift应用程序:“;缺少所需的模块”;导入导入静态库的框架时
以下是我的设置:Macos Swift应用程序:“;缺少所需的模块”;导入导入静态库的框架时,macos,swift,cocoa,frameworks,Macos,Swift,Cocoa,Frameworks,以下是我的设置: 目标C代码的静态库称为Stat 在自己的类中使用Stat中的代码的Swift框架(此框架称为Dyn)。静态库和这个框架在同一个Xcode项目中 将上述项目作为子项目并链接到Dyn的Mac应用程序/项目 在我的应用程序中,我有如下代码: import Cocoa import Dyn ... SomeDynClass().doSomething() 然而,当我试图编译时,当我导入Dyn时,我得到一个错误。错误是 error: missing required module ‘S
Stat
Stat
中的代码的Swift框架(此框架称为Dyn
)。静态库和这个框架在同一个Xcode项目中Dyn
的Mac应用程序/项目import Cocoa
import Dyn
...
SomeDynClass().doSomething()
然而,当我试图编译时,当我导入Dyn时,我得到一个错误。错误是
error: missing required module ‘Stat'
看起来我的应用程序可以很好地找到我的框架,但它也需要为我的静态库找到一个模块
Stat
有一个非常基本的模块文件:
module Stat {
header "Stat.h"
export *
}
我想我需要将我的Mac应用程序的框架搜索路径指向
Stat
,但我不知道为什么,也不知道如何。如何解决此问题?选择您的目标
,然后进入生成设置
并在Swift编译器
-搜索路径
部分中设置导入路径
:
${SRCROOT}/Stat
通常,模块的名称与库的名称相同,但是,我不确定您如何使用module.map
(它可能被命名为Dyn
,在这种情况下,导入路径将反映该名称
生成设置>Swift编译器>搜索路径:
${SRCROOT}/(包含module.map的目录)应自行解析一次
按enter键或tab键
我在涉及SQLite3包的单元测试项目中遇到了相同的错误。添加包后,单元测试总是抛出错误,说“缺少必需的模块SQLiteObjc”
我通过在单元测试目标的构建设置中打开和关闭“Force Package Info Generation”(强制包信息生成)来修复它。Ah shoot!所以我尝试了这个(根据你的建议),但没有成功。但我需要做的是将它添加到我的应用目标(链接到Dyn的应用,它导入统计数据)。很难记得我上周是否更改了其他设置,但我相信这是我需要做的。谢谢。德拉特,我收回这一点。我在错误的项目中。问题似乎是我的Dyn框架和统计库在嵌套项目中。所以,应用程序将它们作为子项目,这似乎会导致无法构建东西,即使使用了您在应用程序目标中建议的导入路径。@jbrennan:在您的框架构建设置中,是否定义了swift编译器搜索路径,如果您自己构建框架,是否所有内容都能正确编译?这为我解决了一个类似的问题,我有一个swift应用程序目标(应用程序)导入动态框架(核心)它通过一个伞形模块映射(Firebase)连接了许多静态框架。这产生了“缺少必需的模块:Firebase”导入Core时,应用程序目标中出现错误。当我更新Core构建设置以将模块映射的目录添加到Swift编译器路径-导入路径时,错误消失。我也是。我已导出具有Firebase依赖关系的导入MyLib。指定
${SRCROOT}/Pods/Firebase/CoreOnly/Sources
导入路径修复了“错误:缺少必需的模块‘Firebase’”。我知道它已经存在一年多了,但您找到了解决方案吗?我现在在OpenSSL中遇到了类似的问题。我构建了自己的.a文件libcrypto和libssl,并为它们创建了module.modulemap(模块名称:COpenSSL).我可以在我的swift框架中使用此功能(测试也在进行中)但当我在应用程序中使用此框架时,我得到:缺少必需的模块:COpenSSL@leizeQ你也尝试过在你的应用程序中链接到COpenSSL
吗?我不确定这是否有效,但值得一试!@jbrennan在我的例子中Stat和Dyn都是swift。Stat我假设我现在可以使用XCODE 9.1构建(它支持swift静态库)问题是在何处包含stat的模块映射,以及模块映射文件中应该包含什么?