用 C++ 扩展 Ruby?

问题描述 投票:0回答:4

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

c++ ruby
4个回答
5
投票

分别是,和否。

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

Ruby 中的所有对象都由 VALUE 对象(这是一个

union
类型)保存,可以很容易地传递它。

您发现的使用 C 扩展 Ruby 的任何指示都适用于 C++,只需稍作修改。或者,您可以使用 SWIG 之类的工具来简化扩展的编写。


2
投票

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

extern "C" void Init_your_extension() { // ... }

我最近不得不向我的 ruby 代码公开一个 C++ 函数,如果您愿意,您可以在这里找到代码(它只是基本的东西,所以我认为这会很好地帮助您开始):http://github.com /psyho/aspell_edit_dist


1
投票

《Programming Ruby》一书有一些有关从 C 访问 Ruby 的详细信息。但我不确定文档的最新程度。这篇博客文章也描述了 Ruby C API。


0
投票
http://www.ibm.com/developerworks/library/os-extendruby/

© www.soinside.com 2019 - 2024. All rights reserved.