【问题标题】:Convert/wrap static Objective-C framework into a dynamic framework that can be used in a Swift project将静态 Objective-C 框架转换/包装成可以在 Swift 项目中使用的动态框架
【发布时间】:2018-04-13 16:19:00
【问题描述】:

我应该按照哪些步骤将静态 Objective-C 框架转换/包装成可在 Swift 项目中使用的 dynamic framework

我已经尝试过这里描述的第二种方法:https://pewpewthespells.com/blog/convert_static_to_dynamic.html,但收到如下错误:

在框架模块中包含非模块化头文件

【问题讨论】:

    标签: ios objective-c swift dynamic frameworks


    【解决方案1】:

    在幕后,Clang 正在尝试为框架创建一个 module.map 文件。当您执行@import Foundation 之类的操作时,module.map 会组织导入。

    模块导入更像 Java 导入而不是 C 标头包含。 C 标头包含(或老式 Objective-C 导入)在编译时将 #include <whatever.h> 替换为该文件的内容。模块导入是一种语义导入,告诉编译器符号在哪里定义等等。

    现在,错误 "include of non-modular header inside framework module" 基本上意味着您有一个具有标头(任何公共 .h 文件)的模块(即您的新框架),它本身具有来自本身不是“模块化”的文件的#import#include 语句。

    最常见且最容易解决的错误是将这些 #include 移到需要它们的 .m 文件中,然后移出 .h 文件。

    另外,请确保正确设置您的框架,尤其是关于标题。您希望所有公共标头包括在您的总括标头中,并且您希望确保正确设置构建过程以根据需要复制公共标头、私有标头和项目标头。获取示例的最简单方法是创建一个新的、完全干净的 Framework 项目,然后查看它的设置方式。请注意阅读自动生成的伞形标题中的 cmets。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2021-10-03
      • 2018-12-01
      • 1970-01-01
      相关资源
      最近更新 更多