如何在ruby中调用C ++函数

时间:2009-10-09 08:17:42

标签: c++ ruby

我是一位经验丰富的C / C ++开发人员,但我是Ruby的新手。

如何在Ruby中调用C ++函数?

4 个答案:

答案 0 :(得分:32)

您有三种可能性:

1)Ruby能够加载库。即使它有点棘手,您也可以决定编写自己的加载器并在Ruby中绑定C ++库。 这是使用所谓的扩展模块完成的。您可以在此处找到全面的教程:http://www.rubyinside.com/how-to-create-a-ruby-extension-in-c-in-under-5-minutes-100.html

2)你可以使用一个工具来生成围绕C ++库的Ruby包装器。以SWIG为例(http://www.swig.org/)。 您只需使用特定于swig的语法创建文件并将其提供给SWIG。然后它将能够生成包含Ruby的许多语言的包装器。

3)您可以选择使用中间件,例如CORBA / ICE /等等。如果你只想调用一些C ++函数,它可能有点矫枉过正,但它允许你远程调用函数,或“隐藏”中间件后面的网格。

答案 1 :(得分:13)

要从Ruby调用C ++代码,您可能需要构建扩展。

如果您是一位经验丰富的C ++开发人员,您可能会对Rice感到满意:

https://github.com/jasonroelofs/rice

它使用C ++元编程技术来简化编写扩展。

如果你打电话给C,你也可以使用ffi。由于名称修改和异常,调用C ++代码比调用C代码要复杂一些。

答案 2 :(得分:5)

我相信提问者正在询问如何在Ruby中调用C ++,如果是这样,那么简单的C / C ++ RubyInline 1是迄今为止最简单的解决方案。

或者,如果您需要调用更多的基本C ++代码,则可以构建ruby扩展。这是good tutorial

答案 3 :(得分:2)

您需要将C ++代码包装在C接口中,然后使用rb_define_method()将这些C函数绑定到ruby方法

或者你可以使用SWIG,正如Aurelien所说。