我正在开始使用mruby。我对使用C进行编程也很陌生,因此我可能不熟悉许多基础知识。我能够编译示例mruby程序,该程序从字符串中加载ruby代码。现在,我想从外部文件加载它。这是我正在使用的示例代码:
#include <stdlib.h>
#include <stdio.h>
#include <mruby.h>
static mrb_value my_c_method(mrb_state *mrb, mrb_value value)
{
puts("Called my C method");
return value;
}
int main(void)
{
mrb_state *mrb = mrb_open();
struct RClass *mymodule = mrb_define_module(mrb, "MyModule");
mrb_define_class_method(mrb, mymodule, "my_c_method", my_c_method, MRB_ARGS_NONE());
mrb_load_string(mrb, "MyModule.my_c_method"); // move this to an external file
return 0;
}
如您在上面的示例中看到的,我想将ruby代码移动到外部文件。对于是否可以简单地“包括” ruby文件,或者是否需要将其预编译为文件,我有些困惑.mrb
。即使那样,我也不知道.mrb
在编译时如何包括该文件。
我需要更改什么才能从外部文件加载ruby代码?
在中,mruby/compile.h
有一个方法叫做mrb_load_file
,它允许您加载ruby文件并使用mruby执行它:
#include <stdlib.h>
#include <stdio.h>
#include <mruby.h>
#include <mruby/compile.h>
static mrb_value my_c_method(mrb_state *mrb, mrb_value value)
{
puts("Called my C method");
return value;
}
int main(void)
{
mrb_state *mrb = mrb_open();
struct RClass *mymodule = mrb_define_module(mrb, "MyModule");
mrb_define_class_method(mrb, mymodule, "my_c_method", my_c_method, MRB_ARGS_NONE());
FILE *f = fopen("example.rb", "r");
mrb_load_file(mrb, f);
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句