Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Swift应用程序:“;缺少所需的模块”;导入导入静态库的框架时_Macos_Swift_Cocoa_Frameworks - Fatal编程技术网

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

以下是我的设置:

  • 目标C代码的静态库称为
    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的模块映射,以及模块映射文件中应该包含什么?