我已按照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
我已搜索但未找到任何解决方案,如果您有任何想法如何解决此错误,请指导我。
答案 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