RabbitMQ erlang客户端,从C系统()调用中编写脚本
我怎样才能做到以下几点:RabbitMQ erlang客户端,从C系统()调用中编写脚本,erlang,rabbitmq,Erlang,Rabbitmq,我怎样才能做到以下几点: system.c #include<stdio.h> int main() { system("/home/noob/send.erl"); return(0); } 然后运行: gcc系统.c-o系统 noob$/系统 产出: send.erl:20: can't find include lib "rabbit_common/include/rabbit.hrl" send.erl:21: can't find i
system.c
#include<stdio.h>
int main()
{
system("/home/noob/send.erl");
return(0);
}
然后运行:
gcc系统.c-o系统
noob$/系统
产出:
send.erl:20: can't find include lib "rabbit_common/include/rabbit.hrl"
send.erl:21: can't find include lib "rabbit_common/include/rabbit_framing.hrl"
escript: There were compilation errors.
所以我在amqp_client.hrl
-include_lib("../../rabbit_common/include/rabbit.hrl").
-include_lib("../../rabbit_common/include/rabbit_framing.hrl").
然后运行noob$./system
和繁荣:
escript: exception error: undefined function amqp_connection:start/1
in function erl_eval:do_apply/6 (erl_eval.erl, line 572)
in call from erl_eval:expr/5 (erl_eval.erl, line 367)
in call from escript:eval_exprs/5 (escript.erl, line 836)
in call from erl_eval:local_func/5 (erl_eval.erl, line 470)
in call from escript:interpret/4 (escript.erl, line 754)
in call from escript:start/1 (escript.erl, line 277)
in call from init:start_it/1
因此,在C的system()调用中,escript在编译和调用时似乎存在路径问题
你知道我怎样才能做到这一点吗
TIA多亏了这个
我能够以友好的方式添加额外的路径目录,以便escript能够找到运行脚本所需的erlang客户端代码
true = code:add_pathz(filename:dirname(escript:script_name()) ++ "/deps/amqp_client/ebin"),
true = code:add_pathz(filename:dirname(escript:script_name()) ++ "/deps/rabbit_common/ebin"),
我仍然不太明白为什么在shell中使用-pz relative path选项调用escript会起作用,而在C的system()中则不起作用
true = code:add_pathz(filename:dirname(escript:script_name()) ++ "/deps/amqp_client/ebin"),
true = code:add_pathz(filename:dirname(escript:script_name()) ++ "/deps/rabbit_common/ebin"),