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

32 c++ ruby

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

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

New*_*biZ 32

你有3种可能性:

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++函数,它可能有点矫枉过正,但它允许你远程调用函数,或"隐藏"中间件后面的网格.


Pau*_*nan 13

要从Ruby调用C++代码,您可能希望构建扩展.

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

https://github.com/jasonroelofs/rice

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

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

  • 我最初在 Windows 上编写 Rice(使用 mingw 和 cygwin 进行测试,并且遇到了有趣的 autotools 错误,我不得不解决)。由于我不再维护它,我不知道最新版本是否在 Windows 上经过了良好的测试,但我认为没有理由它不起作用。这些天我通常使用 IPC(tcp、zeromq、unix 套接字等)与 C++ 交互。如果我需要直接调用 C++ 库代码,我可能会尝试使用 Cling。 (4认同)

hha*_*fez 5

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

或者,如果您需要调用更多的基本C++代码,则可以构建ruby扩展.这是一个很好的教程