有没有办法将Ruby对象传递给C ++应用程序?我之前从未做过那种事情,并且想知道这是否可行。是否需要修改Ruby核心代码?
答案 0 :(得分:5)
是,不,分别。
Ruby是用C编写的.C ++在设计上是C兼容的。
Ruby中的所有对象都由VALUE对象(union
类型)保存,可以很容易地传递。
您发现使用C扩展Ruby的任何指示都适用于C ++,几乎没有任何修改。或者,您可以使用类似SWIG的内容来简化编写扩展程序。
答案 1 :(得分:1)
Programming Ruby书中有关于从C访问Ruby的一些细节。我不知道文档目前的最新情况。这个blog post也描述了Ruby C API。
答案 2 :(得分:1)
使用C ++扩展Ruby不是问题。基本上,编写扩展时唯一需要记住的就是将扩展的init方法声明为extern“C”,如下所示:
extern“C”void Init_your_extension(){ // ... }
我最近不得不向我的ruby代码公开一个C ++函数,你可以在这里找到代码(它只是基本的东西,所以我认为让你开始是好的):http://github.com/psyho/aspell_edit_dist < / p>
答案 3 :(得分:0)
您可以使用Rice在C ++中构建Ruby扩展,请查看http://www.ibm.com/developerworks/library/os-extendruby/