【问题标题】:iOS: "Include of non-modular header" with libxmliOS:“包含非模块化标头”与 libxml
【发布时间】:2015-04-25 12:23:27
【问题描述】:

我正在尝试构建自己的框架“VBL”,它使用基于 libxml.dylib 的 TouchXML

该框架构建良好,但每当我尝试在任何项目中使用它时,都会出现以下错误:

"Include of non-modular header inside framework module VBL.CXMLNode"

这特别是因为在我的框架内的头文件 CXMLNode.h 中,我必须包含 libxml,如下所示:

#include <libxml/tree.h>

将 Build Settings 中的以下属性设置为 YES 是否安全?

allow non-modular included in framework modules

但这无论如何都不适用于 Swift,所以还有其他建议吗?

【问题讨论】:

  • 你的问题解决了吗?

标签: ios swift frameworks header libxml2


【解决方案1】:

如果可以,您可以尝试将#include &lt;libxml/tree.h&gt; 隐藏在私有标头或 .m 文件中。

你也可以尝试创建一个 module.modulemap 文件,里面包含 libxml 根头文件来欺骗 swift 编译器:

module Libxml [system] {
    header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h"
    export *
}

然后将文件放在一个文件夹中,例如 -module/module.modulemap-。

完成此操作后,您应该将其链接到目标build settingswift compiler search path 部分中的import paths,并链接到目标的header search path

$(SRCROOT)/module

然后在你的代码中,你可以使用@import libxml;

【讨论】:

  • 感谢 Loegic,它可以工作,但如何在 podspec 中更新?
  • @ios_user,对不起,我不明白这个问题?你想更新一个依赖?
  • 我的意思是我编辑 pod modulemapp 文件以在 pod 列表中添加缺少的无模块化标题,但是如果我希望在不手动编辑的情况下在 pod 中工作,而不是在我的 podspec 文件中,当我做豆荚绒,它不起作用
  • 好吧,你可以,没有很多文档,但尝试搜索'pod spec module map file'
猜你喜欢
  • 2017-12-19
  • 2016-02-08
  • 2015-01-12
  • 2016-07-12
  • 1970-01-01
  • 2016-10-21
  • 2018-09-28
相关资源
最近更新 更多