【问题标题】:"Include of non-modular header inside framework module" in C header of SSZipArchiveSSZipArchive 的 C 标头中的“在框架模块中包含非模块化标头”
【发布时间】:2015-08-29 11:19:02
【问题描述】:

我正在尝试在我的 Swift iOS 项目中使用 SSZipArchive objc 库。

我做了什么:

  1. 创建了一个 Objective-C “Cocoa Touch 框架”
  2. 跟随this guide将SSZipArchive的目标C和C文件导入其中。
  3. 根据this answer 将所有 C 标头更改为公共标头
  4. 根据this answer 更改构建设置以允许非模块化包含

框架编译良好。我以前可以通过这种方式在 Swift 项目中使用目标 C 库,所以我猜这些步骤是正确的?

现在的问题是,当我尝试在我的项目中导入 SSZip 并尝试编译时,它会为 SSZipArchive 的每个 C 头文件提供“在框架模块中包含非模块化头文件”错误,我已经尝试过我可以在网上找到的所有可能的解决方案都没有成功。似乎问题集中在 zlib.h

请帮忙.. 我被困了一个多星期,找不到任何替代方法来快速解压缩文件。

【问题讨论】:

  • 你有没有想过这个问题?
  • 是的,让我发布答案

标签: ios objective-c c swift ziparchive


【解决方案1】:

我得到了这个工作。您需要将所有导致问题的#include 从其 .h 文件中移出,并将它们放入其 .c 文件中。之后清理并重新编译,错误消失,一切正常。

【讨论】:

    【解决方案2】:

    我找到了另一种解决方案,如何将 zlib.h 导入保留在头文件中并成功构建框架。

    1. 从官网下载zlib的源码:http://www.zlib.net/我用过链接:http://zlib.net/zlib-1.2.8.tar.gz

    2. 解压。

    3. 然后将 zlib.h 和 zconf.h 头文件添加到您的 Framework 项目中,并同时链接 libz.tbd。

    4. 然后将您的 zlib.h 和 zconf.h 标头设置为公开(目标设置 -> 构建阶段 -> 标头)

    5. 构建项目。一切都应该没问题。

    之后,我的框架工作正常,并成功解压缩了我的 iOS 应用中的文件。

    【讨论】:

      猜你喜欢
      • 2016-02-08
      • 2016-07-12
      • 1970-01-01
      • 2016-10-21
      • 2018-09-28
      • 2021-05-14
      • 2016-11-20
      相关资源
      最近更新 更多