我希望将Ruby用作我的游戏引擎的脚本语言.我发现通常的文章描述了如何从C++代码调用Ruby类(反之亦然)(例如这里),但我不太清楚如何用这种工作方式做我想做的事......
我的引擎目前使用的是我用Flex和Bison编写的一种语言,以及一个基于小堆栈的虚拟机.脚本并不总是从头到尾运行,例如它们有时包括"睡2秒"或"等到角色走完"之类的命令,因此调度程序会密切关注每个脚本的状态和指令指针,并知道何时恢复它们,依此类推.
因此,我似乎真的需要某种嵌入式Ruby解释器,我可以对其进行一定程度的控制,而不是简单地调用Ruby方法.或者我只是迟钝而错过了什么?
我正在使用Microsoft Visual C++,所以理想情况下,任何解决方案都可以很好地编译.
这是一个包含错误处理的例子.
#include#include using namespace std; int main(void) { ruby_init(); ruby_init_loadpath(); 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); cerr << StringValuePtr(rbError) << endl; }; ruby_finalize(); return status; }