"Include of non-modular header inside framework module" 在 SSZipArchive 的 C header 中

"Include of non-modular header inside framework module" in C header of SSZipArchive

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

我做了什么:

  1. 创建了 Objective-C "Cocoa Touch Framework"
  2. 按照 this guide 将 SSZipArchive 的 objective C 和 C 文件导入其中。
  3. 根据 this answer
  4. 将所有 C header 更改为 public
  5. 更改构建设置以允许 non-modular 根据 this answer
  6. 包含

框架编译正常。我以前使用这种方式设法在 Swift 项目中使用 objective C 库,所以我猜这些步骤是正确的吗?

现在的问题是,当我尝试在我的项目中导入 SSZip 并尝试编译时,它会为 SSZipArchive 的每个 C header 文件提供 "Include of non-modular header inside framework module" 错误,我已经尝试过我可以在网上找到所有可能的解决方案,但都没有成功。似乎问题集中在 zlib.h

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

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

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

  1. 从官网下载zlib源码:http://www.zlib.net/ I have used the link: http://zlib.net/zlib-1.2.8.tar.gz

  2. 解压缩。

  3. 然后将 zlib.h 和 zconf.h headers 添加到您的框架项目中,并链接 libz.tbd。

  4. 然后设置你的 zlib.h 和 zconf.h headers public (TARGETS settings -> Build Phases -> Headers)

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

之后我的框架运行良好,并成功解压缩了我的 iOS 应用程序中的文件。