Ruby 代码中的 C/C++?

Posted

技术标签:

【中文标题】Ruby 代码中的 C/C++?【英文标题】:C/C++ within Ruby code? 【发布时间】:2011-03-16 01:41:33 【问题描述】:

C/C++ 是编写 Ruby 应用程序的一些性能关键方面的好选择。我知道这是可能的。

我想知道如何将 C/C++ 代码添加到 Ruby 代码中;任何其他语言。

您在开源项目或其他项目中是否注意到了这方面的任何实际应用?

【问题讨论】:

【参考方案1】:

除了“扩展 Ruby”之外,还有另外两个资源:

README.EXT (extension.rdoc) - 向您展示有关如何构建 C 扩展的更多信息。对“扩展 Ruby”的赞美 Ruby Inline - 这是一个库,它试图通过让您调用 ruby​​ 中的方法来编译 C 代码,从而使构建 C 扩展变得更加容易。

【讨论】:

【参考方案2】:

查看 Pickaxe 书籍的“扩展 Ruby”部分:

http://www.ruby-doc.org/docs/ProgrammingRuby/html/ext_ruby.html

【讨论】:

【参考方案3】:

您应该看看SWIG - 它允许您在 C/C++ 中创建 ruby​​ 扩展。

【讨论】:

【参考方案4】:

我们在其中一个项目中使用ffi。

Ruby-FFI 是一个 Ruby 扩展 以编程方式加载动态 库,绑定函数 他们,并从 红宝石代码。此外,Ruby-FFI 扩展作品无需更改 Ruby 和 JRuby。

效果很好。

【讨论】:

【参考方案5】:

将您的高性能代码编译成系统服务/可执行文件,并从 Ruby 内部调用它...?

【讨论】:

当然,系统服务是其中一种方式。在某些情况下会没事的。在用 ruby​​ 编写的大型算法中为一小段 c++ 代码运行系统服务可能很笨拙。【参考方案6】:

看来你需要阅读Extending Ruby

【讨论】:

感谢您的建议。这可能是首先要研究的内容之一。

以上是关于Ruby 代码中的 C/C++?的主要内容,如果未能解决你的问题,请参考以下文章

File.basename

无法理解 ruby​​ 逻辑运算符的结果 [重复]

将 c/c++ 宏转换为 c# 中的等效代码 [关闭]

为 Ruby 模块中的每个方法调用执行代码

混合 C/C++ 代码中的结构指针

MATLAB 代码和 C/C++ 集成中的致命错误