加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 myownroc 于 2022-11-25 16:49 编辑
工作摸鱼想弄个类似RPG Maker的Ruby引擎。
各种交互都挺好的,结果发现在调用诸如Time.now这样的Ruby内建类的函数时发现程序会崩溃。
跟进去一看应该是找不到Time这样的内建类,导致操作空指针使程序崩溃,而内建的模块比如Math就不存在这种问题。于是我现在就很迷惑RPG Maker中是怎么能够调用Ruby内建类的……
找了一下ruby.h貌似并没有相关的接口提供,文档更是少之又少(版本还很旧),于是上论坛上请教大伙看看有没有人知道的~
坏了,好像Windows下编译的Ruby才会有这种情况。
顺便附一份代码
/* 环境:Win10 编译器:VS2019 */ #include <ruby/ruby.h> int main(int argc, char* argv[]) { ruby_sysinit(&argc, &argv); RUBY_INIT_STACK; ruby_init(); ruby_script("ruby-interact"); ruby_init_loadpath(); rb_eval_string("p Math.sqrt(10.0)"); rb_eval_string("p Marshal.dump([0, 1, 2, 3, 4])"); rb_eval_string("p Time.now()"); // Program crashes here. ruby_finalize(); return 0; }
/*
环境:Win10
编译器:VS2019
*/
#include <ruby/ruby.h>
int main(int argc, char* argv[])
{
ruby_sysinit(&argc, &argv);
RUBY_INIT_STACK;
ruby_init();
ruby_script("ruby-interact");
ruby_init_loadpath();
rb_eval_string("p Math.sqrt(10.0)");
rb_eval_string("p Marshal.dump([0, 1, 2, 3, 4])");
rb_eval_string("p Time.now()"); // Program crashes here.
ruby_finalize();
return 0;
}
|