c++ - 在 C++ 应用程序中嵌入 Ruby 解释器

标签 c++ ruby scripting

我希望使用 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/

相关文章:

ruby - 如何立即打印标准输出?

jquery - 如何在 View 文件夹中使用js文件

linux - 如何从Linux中的字符串中提取以用户定义的特殊字符开头和结尾的子字符串?

C++:如何从快捷方式打开 IShellFolder 驱动器文件夹

ruby-on-rails - 来自助手的条件文本

c++ - dll加载时出错

scripting - 从plink获取返回码?

bash - 如何重新定位每行的第三个字符串以从同一行的第 n 个字符开始

c++ - 遍历对列表,列表在数组中

c++ - C COMPS 执行失败的所有作业