ejabberd模块编译错误

ejabberd module compilation error

我是 ejabberd 的新手,正在尝试在 Windows 服务器上为 offline_message_posturl 添加新模块。除了以下内容,我找不到任何专门针对 Windows 的博客 post。我正在使用 ejabberd 15.07 版。

我一直在关注这个博客 post: http://jasonrowe.com/2011/12/30/ejabberd-offline-messages/

现在我无法从模块文件创建 .beam 文件。我收到此错误:

> c(mod_http_offline).     
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'   
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  
error

我该如何解决这个错误?

INFO_MSG宏以前是在头文件ejabberd.hrl中定义的,但是在ejabberd 13.06中移到了logger.hrl,在那篇博客之后发布post 写的。包括 logger.hrlejabberd.hrl,您的文件应该编译:

-include("ejabberd.hrl").
-include("logger.hrl").

您没有指向 ejabberd 包含 .hrl 文件。最简单的方法可能是将模块添加到 ejabberd src 目录并重新编译所有内容。

否则,您可以使用 erlc 编译您的模块,使用 -I 指向 ejabberd include dirs(根据需要使用尽可能多的 -I 指令)。例如:

erlc -I ../ejabberd/include mod_http_offline.erl