ejabberd模块编译错误

我是ejabberd的新手,试图在Windows服务器上为offline_message_posturl添加新模块。 除了下面的内容外,我找不到专门针对Windows的博客文章。 我正在使用ejabberd 15.07版本。

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

现在我无法从模块文件中创build.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 ,该文件是在写博客文章后发布的。 包括logger.hrl以及ejabberd.hrl ,你的文件应该编译:

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

你不是指向ejabberd包括.hrl文件。 最简单的方法可能是将你的模块添加到ejabberd src目录并重新编译一切。

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

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