我希望使用 Ruby 作为我的游戏引擎的脚本语言。我找到了描述如何从 C++ 代码调用 Ruby 类的常用文章,反之亦然(例如 here ),但我不太明白如何用这种工作方式做我想做的事......
我的引擎目前使用一种我自己用 Flex 和 Bison 编写的小语言,以及一个基于堆栈的小虚拟机。脚本并不总是从头到尾运行,例如它们有时包含诸如“ sleep 2 秒”或“等待角色完成行走”之类的命令,因此调度程序会密切关注每个脚本的状态和指令指针,并知道何时恢复它们,等等。
看来我真的需要某种嵌入式 Ruby 解释器,我可以对其进行一定程度的控制,而不是简单地调用 Ruby 方法。还是我只是迟钝而遗漏了什么?
我在 Microsoft Visual C++ 中工作,因此理想情况下,任何解决方案都可以很好地轻松编译。
最佳答案
这是一个包含错误处理的示例。
#include <iostream>
#include <ruby.h>
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;
}
关于c++ - 在 C++ 应用程序中嵌入 Ruby 解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/626333/