【发布时间】:2010-05-10 08:41:55
【问题描述】:
我正在编写一个从 c 调用 ruby 代码的应用程序。我遇到了一点困难,想知道是否有人可以为我指明仪式的方向。
我目前在我的 C 中。
#include ruby.h
main()
{
ruby_init();
rb_require("myRubyFile");
rb_funcall(rb_module_new(), rb_intern("RubyFunction"), 0, NULL);
}
我的 ruby 文件与我的 c 文件位于同一目录中,名为 myRubyFile.rb,包含函数 RubyFunction() 的定义。
这是对我真正想做的事情的缩减,只是让它对其他人更具可读性。我只需要一些关于这是否是从我的 c 文件中调用 ruby 代码的正确方法的反馈。
问候
【问题讨论】:
-
快速建议:1) 不要省略 ruby_init_loadpath()(我的 SEGV 没有这个),2) 不要命名方法
RubyFunction-- 当没有括号调用时,ruby 会寻找一个 constant 具有相同的名称,并且,3)您可能想要在特定于应用程序的类或模块中定义一个“静态”方法,而不是针对隐式self定义的方法(参见答案)。
标签: c ruby linux embedded-ruby