Как правильно работать с include\include_lib

105 views
Skip to first unread message

Євген Петро

unread,
Jul 9, 2014, 2:45:26 PM7/9/14
to erlang-...@googlegroups.com

Всем привет!

Пишу небольшую программу в которой подключаю клиент RabbitMQ

Erlang/OTP 17 [erts-6.0] [source-07b8f44] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Для клиента необходимо подключать -include("amqp_client.hrl").

  {ok, Rabbit} = amqp_connection:start(#amqp_params_network{}),
  {ok, ChRabbit} = amqp_connection:open_channel(Rabbit),
  Declare = #'queue.declare'{queue = <<Channel1>>}, -- здесь валится с ошибкой, что такого рекорда нету

Компилится без вопросов:
{erl_opts, [debug_info, export_all, {i, ["./deps/amqp_client/include"]}]}.

В amqp_client.hrl есть вложенные 
-include_lib("rabbit_common/include/rabbit.hrl").
-include_lib("rabbit_common/include/rabbit_framing.hrl").

Я так понимаю, когда процесс запущен он не видит этих вложенных hrl.

Как правильно компилить и подключать hrl?

ПС:
При подключении через консоль все ок.

Євген Петро

unread,
Jul 9, 2014, 3:59:28 PM7/9/14
to erlang-...@googlegroups.com
Нашел ошибку <<Channel1>> --> BinChannel = list_to_binary(Channel1)

Євген Петро

unread,
Jul 9, 2014, 4:02:04 PM7/9/14
to erlang-...@googlegroups.com
Неправильный вывод сделал из-за im().
Evulate строка не видит record в дебаг режиме.

Євген Петро

unread,
Jul 9, 2014, 4:03:37 PM7/9/14
to erlang-...@googlegroups.com

Evulate* - Evaluator

Sergey Prokhorov

unread,
Jul 9, 2014, 7:31:59 PM7/9/14
to erlang-...@googlegroups.com
А amqp_client это ваш файл или из RabbitMQ клиента?
Вообще, правило такое: .hrl файлы текущего OTP приложения подключаем через include, а .hrl других приложений - через include_lib.

Ну и после того как erl скомпилировался, include уже не важны - они используются только в момент компиляции.

среда, 9 июля 2014 г., 22:45:26 UTC+4 пользователь Євген Петро написал:
Reply all
Reply to author
Forward
0 new messages