ejabberd模块编译错误

3
我是一个新手,正在尝试在Windows服务器上为离线消息发布URL添加新模块。除了下面的内容外,我找不到任何关于Windows的博客文章。我正在使用ejabberd 15.07版本。
我一直在遵循这篇博客文章: 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

如何修复此错误?
2个回答

7

INFO_MSG宏曾经在头文件ejabberd.hrl中定义,但在ejabberd 13.06版本之后移动到了logger.hrl中。如果你想让你的文件编译通过,请同时包含logger.hrlejabberd.hrl

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

嗨,感谢你的帮助。我已经成功构建了.beam文件,并将其复制到“ebin”文件夹中。在ejabberd.yml文件的模块部分下添加了“mod_http_offline:[]”,并重新启动后仍然出现错误。根据博客所说,应该添加到……(此处缺失) - Josh
我在重新启动ejabberd服务器时仍然遇到错误。博客中提到必须在cfg文件中添加模块,但是根据我的了解,新版本的配置必须在.yml文件中,而不需要使用{ }。 - Josh

1
您没有指向ejabberd包含的.hrl文件。最简单的方法可能是将您的模块添加到ejabberd src目录中并重新编译所有内容。
否则,您可以使用erlc编译您的模块,并使用-I指向ejabberd包含目录(如有必要,请使用尽可能多的-I指令)。例如:
erlc -I ../ejabberd/include mod_http_offline.erl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接