我正在通过C运行一个Ruby脚本,如下所示:
#include <ruby.h>
int main(void) {
ruby_init();
int status;
rb_load_protect(rb_str_new2("./test.rb"), 0, &status);
if (status) {
VALUE rbError = rb_funcall(rb_gv_get("$!"), rb_intern("message"), 0);
printf("%s\n", StringValueCStr(rbError));
}
ruby_finalize();
return status;
}
Ruby 脚本:
1.hello
当我现在运行它时,我得到以下输出:
undefined method `hello' for 1:Integer
这不出所料. 然后,我定义这个方法:
VALUE hello(VALUE self) {
return Qnil;
}
// just after ruby_init()
rb_define_method(rb_cInteger, "hello", hello, 0);
当我现在运行它时,我得到了
ruby: [BUG] Segmentation fault at 0x00000000000000b0
/* ... */
我该如何处理这个错误呢?在这种情况下,$!
是零,但我不知道为什么.