"在框架模块中包含非模块化标头"在SSZipArchive的C标题中

时间:2015-06-13 15:05:15

标签: ios objective-c c swift ziparchive

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

我做了什么:

  1. 创建了Objective-C" Cocoa Touch Framework"
  2. 关注this guide将SSZipArchive的目标C和C文件导入其中。
  3. 根据this answer
  4. 将所有C标题更改为公开
  5. 根据this answer
  6. 更改构建设置以允许非模块化包含

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

    现在的问题是当我尝试在我的项目中导入SSZip并尝试编译时,它会在框架模块中提供&34;非模块化头部" SSZipArchive的每个C头文件的错误,我尝试了所有可能的解决方案,我可以在网上找到但没有成功。似乎问题集中在zlib.h

    Screenshot of compilation error

    请帮助..我已经停留了一个多星期了,而且我找不到任何替代方法来快速解压缩文件。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我找到了另一个解决方案,如何将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标头设置为公共(目标设置 - >构建阶段 - >标头) enter image description here

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

  6. 之后我的框架运行正常并成功解压缩我的iOS应用程序中的文件。