gpt4 book ai didi

objective-c - 关于将 Objective C 代码添加到快速动态框架的说明

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:54 25 4
gpt4 key购买 nike

我在 swift 中有一个动态框架,目前正在链接另一个用 Objective C 编写的框架。这有效但很烦人,因为 Objective C 框架实际上只有 2 个文件,我想知道是否有办法把这个进入我的 swift 框架。

如果这是一个应用程序,我会使用 Bridging-Header 但它在 swift 框架内不受支持。

我的框架名为 GDL90,仅包含 swift 文件。

我的 Objective-C 框架包括:

  • GeoidCalculator.h
  • GeoidCalculator.m
  • EGM96(数据文件)
  • CORCOEF(数据文件)

真的很简单 - 对吧?所以我想看看是否有办法将这段代码添加到我的 swift 项目中。

尝试 #1 - 将我的代码添加到“umbrella header?” GDL90.h

我添加了我的文件并收到警告 Include of non-modular header inside framework module 'GDL90'

好吧,那不是骰子。

尝试 2

我想我需要制作一个模块映射文件。

所以我创建了一个名为 ${SRCROOT}/GDL90/EGM96 的目录,并在其中创建了 EGM96.module.modulemap

module EGM96 {
header "GeoidCalculator.h"
export *
}

然后在我的一个 swift 文件中我有 import EGM96 似乎没有找到。

在我的build设置中我有:

Define Modules 开启,我从我的Module Map File 项目指向modulemap 文件

我是不是漏掉了什么??

最佳答案

如果正确创建内部框架,则不需要模块映射文件:

  1. 在 EGM96 项目下创建新的框架目标“EGM96”:
    • 转到 GDL90 项目 -> 添加新目标 -> Cocoa Touch 框架
    • 输入名称并选择 Objective-C 作为语言 enter image description here
  2. 将 objective-с 文件和 EGM96 的其他来源添加到新目标。 enter image description here

  3. 将 GeoidCalculator.h 添加为公共(public) header :

    • 将 GeoidCalculator.h header 的目标成员从“项目”更改为“公共(public)” enter image description here
    • 将 header 导入名为 EGM96.h 的伞文件
    • 确保伞头 EGM96.h 对 EGM96 目标是公开的。 enter image description here
  4. 将新框架添加到 GDL90 的目标依赖项中,并将新库添加到 GDL90 的链接二进制文件中。 enter image description here
  5. 现在您可以在 EGM96 的任何 swift 文件中导入 EGM96:

导入 EGM96

关于objective-c - 关于将 Objective C 代码添加到快速动态框架的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com