在SSZipArchive的C头中包含“框架模块内的非模块头”

我想在我的Swift iOS项目中使用SSZipArchive objc库。

我做了什么:

  1. 创build了Objective-C“cocoa触摸框架”
  2. 遵循本指南将SSZipArchive的目标C和C文件导入到其中。
  3. 根据这个答案,将所有C标头更改为公共
  4. 根据此答案更改构build设置以允许非模块化包含

框架编译好。 我会设法使用这种方式在Swift项目中使用目标C库,所以我想这些步骤是正确的?

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

编译错误的屏幕截图

请帮助..我坚持了一个多星期了,我无法find任何替代品,迅速解压缩文件。

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

我已经find了一个更多的解决scheme,如何离开zlib.h导入头文件,并成功构build框架。

  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头文件设置为public(TARGETS设置 – > Build Phases – > Headers) 在这里输入图像说明

  5. build立这个项目。 一切都应该没问题。

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