我是一位经验丰富的C / C ++开发人员,但我是Ruby的新手。
如何在Ruby中调用C ++函数?
答案 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所说。