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"),