【问题标题】:ejabberd module compilation errorejabberd 模块编译错误
【发布时间】:2016-05-29 09:23:30
【问题描述】:

我是 ejabberd 的新手,正在尝试在 Windows 服务器上为 offline_message_posturl 添加新模块。除了以下内容,我找不到任何专门针对 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

我该如何解决这个错误?

【问题讨论】:

    标签: windows server erlang ejabberd erlang-shell


    【解决方案1】:

    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:[]”并重新启动我仍然收到错误。根据博客假设添加
    • 我在重启 ejabberd 服务器时仍然遇到错误。在博客中说模块必须添加到 cfg 文件中,但据我所知,新版本的配置必须在 .yml 文件中,没有 { }
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2013-08-14
      • 2016-01-13
      • 2014-01-20
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多