Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang Can';不要在ejabberd中编译新模块_Erlang_Ejabberd - Fatal编程技术网

Erlang Can';不要在ejabberd中编译新模块

Erlang Can';不要在ejabberd中编译新模块,erlang,ejabberd,Erlang,Ejabberd,我正在尝试在erlang中为ejabberd编译一个新模块。我遵循本教程: 我正在尝试编译以下代码: %% name of module must match file name -module(mod_http_offline). -author("Earl The Squirrel"). %% Every ejabberd module implements the gen_mod behavior %% The gen_mod behavior requires two functio

我正在尝试在erlang中为ejabberd编译一个新模块。我遵循本教程:

我正在尝试编译以下代码:

%% name of module must match file name
-module(mod_http_offline).

-author("Earl The Squirrel").

%% Every ejabberd module implements the gen_mod behavior
%% The gen_mod behavior requires two functions: start/2 and stop/1
-behaviour(gen_mod).

%% public methods for this module
-export([start/2, stop/1, create_message/3]).

%% included for writing to ejabberd log file
-include("ejabberd.hrl").

%% ejabberd functions for JID manipulation called jlib.
-include("jlib.hrl").

start(_Host, _Opt) ->
        post_offline_message("testFrom", "testTo", "testBody"),
        ?INFO_MSG("mod_http_offline loading", []),
        ejabberd_hooks:add(offline_message_hook, _Host, ?MODULE, create_message, 50).  



stop (_Host) ->
        ?INFO_MSG("stopping mod_http_offline", []),
        ejabberd_hooks:delete(offline_message_hook, _Host, ?MODULE, create_message, 50).



create_message(_From, _To, Packet) ->
        Type = xml:get_tag_attr_s("type", Packet),
        FromS = xml:get_tag_attr_s("from", Packet),
        ToS = xml:get_tag_attr_s("to", Packet),
        Body = xml:get_path_s(Packet, [{elem, "body"}, cdata]),
        if (Type == "chat") ->
            post_offline_message(FromS, ToS, Body)
        end.



post_offline_message(From, To, Body) ->
        ?INFO_MSG("Posting From ~p To ~p Body ~p~n",[From, To, Body]),
        ?INFO_MSG("post request sent (not really yet)", []).
我已将jlib.hrl、ejabberd.hrl添加到我的文件夹中。但当我尝试编译此代码时,我遇到以下错误:

jlib.hrl:22: can't find include lib "p1_xml/include/xml.hrl"
mod_http_offline.erl:21: undefined macro 'INFO_MSG/2'
mod_http_offline.erl:27: undefined macro 'INFO_MSG/2'
mod_http_offline.erl:44: undefined macro 'INFO_MSG/2'
jlib.hrl:426: record xmlel undefined
jlib.hrl:466: type xmlel() undefined
mod_http_offline.erl:11: function start/2 undefined
mod_http_offline.erl:11: function stop/1 undefined
mod_http_offline.erl:38: function post_offline_message/3 undefined
mod_http_offline.erl:8: Warning: behaviour gen_mod undefined
我如何解决这个问题


我的Ejabberd版本:2.1.11

Ejabberd存储库中的jlib.hrl文件包含
-include(“ns.hrl”)。
(第21行)和
-include_-lib(“p1_-xml/include/xml.hrl”)。
第22行。include_lib意味着它将在库路径中搜索文件。您可以对此进行修改,并在目录中添加必要的文件(可能是一个简单的测试解决方案?),但我认为最简单的方法是将tour文件添加到ejabberd应用程序中,并使用rebar进行编译。

我如何运行rebar?我在ubuntu中找不到rebar的位置。如果你从github克隆ejabberd[,它将随rebar和所有应用程序结构+安装说明一起提供。我已经安装了ejabberd。但我不知道如何运行rebar。:o)我没有安装ejabberd,但通常您只需键入./rebar compile或其他命令。文档位于[我想我必须知道ejabberd文件的位置。你知道ejabberd文件在哪里吗?因为当我下载源代码时,我在目录中看到了rebar文件。但我不知道这些文件在ubuntu中的位置。