2016-02-17 7 views
3

Я новичок в ejabberd, пытаясь добавить новый модуль для offline_message_posturl на сервере Windows. Я не мог найти сообщение в блоге специально для Windows, кроме приведенного ниже. Я использую ejabberd версии 15.07.Ошибка компиляции модуля ejabberd

Я следовал за этот блог: 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 

Как исправить эту ошибку?

ответ

7

INFO_MSG макрос используется должен быть определен в заголовочном файле ejabberd.hrl, но он был перенесен в logger.hrl в ejabberd 13.06, который был выпущен после того, как этот пост в блоге было написано. Включите logger.hrl, а также ejabberd.hrl, и файл должен составлять:

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

привет, спасибо за помощь. Я могу создать файл .beam. и скопирован в папку «ebin». и добавил «mod_http_offline: []» в разделе модулей в файле ejabberd.yml и перезапустил, я все еще получаю ошибку. Согласно блогу предположим добавить в –

+0

, я все еще сталкиваюсь с ошибкой при перезапуске сервера ejabberd. в блоге он сказал, что модуль должен добавить в cfg-файл, но для новой версии, насколько мне известно, конфигурация должна быть в .yml-файле без {} –

1

Вы не указывая на ejabberd включают .hrl файл. Простейший подход - это, вероятно, добавить модуль в каталог ejabberd src и перекомпилировать все.

В противном случае вы можете скомпилировать свой модуль с помощью erlc, используя -I, чтобы указать на ejabberd include dirs (используйте как можно больше директивы -I). Например:

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

спасибо за ответ –