新手问题 如何在 C++ 中嵌入 Ruby 并能够交互传值?

yuwenhuisama · 2012年08月02日 · 最后由 skandhas 回复于 2012年08月02日 · 3910 次阅读

嵌入解释器并不困难,关键是如何让 Ruby 脚本中的变量能够和 C++ 中的变量相互传值?没有找到相关的资料……

这个......楼主是什么意思???

如果是 linux: 请看 apue 进程间通信

#1 楼 @jinleileiking 環境是 Windows,VC++……我的意思是比如當前 C++ 程序運行期間中有一個變量 nCount,此時我如何讓嵌入的 Ruby 解釋器執行腳本的時候得到這個 nCount(不能外掛 DLL)~?

因为你已经内嵌了 Ruby VM:

  1. 从 C/C++ 访问 Ruby : 因为 Ruby 已经提供了 C 接口来访问和操纵 Ruby 的对象,所以你就不用操心 这一点。
  2. 从 Ruby 访问 C++ : 这是你要做的工作,主要就是按 Ruby Native 的规范来封装一个中间层,Ruby VM 通过这个中间层来访问你 C++ 中的对象。

用 C++ 与 Ruby VM 交互,需要注意 析构函数 与 setjmp/longjmp 之间的恩恩怨怨。@night_song 曾有专文论述。

#2 楼 @yuwenhuisama 至于具体代码,与写 Native Gem 没啥区别。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号