代码之家  ›  专栏  ›  技术社区  ›  Lars Nielsen

在swift中使用静态C库,找不到模块

  •  1
  • Lars Nielsen  · 技术社区  · 8 年前

    我需要为一个C库创建一个swift包装器,用于iOS和macOS。 我已经添加了 .a 到框架列表并将其包含在 library search path . 我已将头文件添加到项目并将其添加到 User header search paths 我加了一个 module.modulemap 对这个项目也是如此。看起来像这样:

    module codinglibc [system][extern_c] {
        header “codinglibc.h”
        export *
    }
    

    但是当我用Swift输入模块时:

    import Foundation
    
    import codinglibc
    

    我收到此错误消息: No such module 'codinglibc' .

    该项目是一个Cocoa框架,我一直遵循这一指南: https://medium.com/swift-and-ios-writing/using-a-c-library-inside-a-swift-framework-d041d7b701d9

    我看了很多stackoverflow的答案,但大多数都是通过添加导入路径来解决的,我已经完成了这项工作,Xcode可以找到头文件和静态库,所以这不是问题所在。

    所以: 一。我做了明显的错事,但我错过了吗? 2。我应该改用桥头吗?

    编辑: 我试着启用 Allow Non-modular Includes In Framework Modules 仍然没有成功

    1 回复  |  直到 8 年前
        1
  •  0
  •   Lars Nielsen    8 年前

    答案很琐碎,但也很烦人。

    如果您添加 module.modulemap 在Xcode项目中,Xcode不会将其注册为“待导入”,因此您需要做的是添加路径 modulemap模块 头中的文件包括。