Ejabberd无法找到包含lib" p1_xml / include /

时间:2014-08-20 14:19:31

标签: erlang ejabberd

我已按照https://www.process-one.net/en/wiki/ejabberd_HTTP_request_handlers/创建示例,我在mac os上安装了Ejabberd 14.07。我已经使用

编译了这个程序
erlc -I /Applications/ejabberd-14.07/lib/ejabberd-14.07/include -pz /Applications/ejabberd-14.07/lib/ejabberd-14.07/ebin mod_http_hello.erl

但是当我编译时,我发现了以下错误消息。

/Applications/ejabberd-14.07/lib/ejabberd-14.07/include/jlib.hrl:22: can't find include lib "p1_xml/include/xml.hrl"
/Applications/ejabberd-14.07/lib/ejabberd-14.07/include/jlib.hrl:426: record xmlel undefined
/Applications/ejabberd-14.07/lib/ejabberd-14.07/include/jlib.hrl:466: type xmlel() undefined

我已搜索但未找到任何解决方案,如果您有任何想法如何解决此错误,请指导我。

4 个答案:

答案 0 :(得分:3)

我执行了以下操作以解决问题,在源代码我运行./rebar get-deps./rebar compile然后我将deps复制到include文件夹

  

cp -R deps / * / lib / ejabberd / include /

之后我能够编译我的模块

答案 1 :(得分:1)

从15.03开始,为了解决此问题,您必须向erlc添加一个参数:-DNO_EXT_LIB

答案 2 :(得分:0)

您错过了一些依赖项。在ejaberd源目录的根目录中运行./rebar get-deps,然后查看./deps目录。

答案 3 :(得分:0)

我已解决了这个问题,这不是解决此错误的正确方法,但我花了2天时间来解决这个问题,以便提前工作我已经使用过这个解决方案。 您可以看到找不到xml.hrl文件,因此我将文件内容复制到jlib.hrl文件中,其中包含它并且没有显示错误。

如果您对xml.hrl文件不可用感到困惑,那么如何复制内容,那么您必须按照步骤使用命令行安装ejabberd。当你运行" make命令"它将添加所有依赖项。

转到deps - > p1_xml-> xml.hrl