首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C++扩展Ruby?

用C++扩展Ruby?
EN

Stack Overflow用户
提问于 2010-01-13 09:30:58
回答 4查看 1.5K关注 0票数 1

有没有办法将Ruby对象传递给C++应用程序?我以前从来没有做过这样的事情,我想知道这是否可能。它需要修改Ruby核心代码吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-13 09:39:07

可以,也可以不可以。

Ruby是用C编写的。C++在设计上是兼容C的。

Ruby中的所有对象都由一个值对象(它是一个union类型)持有,它可以很容易地传递。

你找到的任何用C扩展Ruby的方向都适用于C++,只需稍加修改即可。或者,你可以使用SWIG之类的东西来简化扩展的编写。

票数 5
EN

Stack Overflow用户

发布于 2010-01-14 06:20:34

用C++扩展Ruby不是问题。基本上,在编写扩展时需要记住的唯一一件事就是将扩展的init方法声明为extern "C",如下所示:

外部"C“void Init_your_extension() { // ... }

我最近不得不在我的ruby代码中公开一个C++函数,如果你愿意,你可以在这里找到代码(这只是基本的东西,所以我认为最好入门):http://github.com/psyho/aspell_edit_dist

票数 2
EN

Stack Overflow用户

发布于 2010-01-13 09:38:37

Ruby书中有一些关于从C访问Programming Ruby的细节,不过我不确定文档的更新程度。此blog post还描述了Ruby C API。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2053798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档