我可以像用Lua一样用Ruby编写c++应用程序吗?
Can I script a C++ application with Ruby like with Lua?
我刚刚开始阅读Ruby,我想知道它是否可以嵌入到像Lua这样的c++应用程序中,它提供了一个库来解析给定的脚本文件:https://stackoverflow.com/a/5127294/399107
可以。你只需要在应用程序中嵌入一个Ruby引擎。
请注意,与主要的Lua引擎不同,一些Ruby引擎并不真正适合嵌入到其他程序中。但是,例如,Rubinius, IronRuby和JRuby都是专门为嵌入而设计的,即使它不漂亮,你也可以嵌入YARV或MRI,即使它们不是为嵌入而设计的。
还有MRuby,但不像其他的,它没有实现完整的Ruby语言规范,它只实现了ISO Ruby规范的一个子集,它本身只是Ruby 1.8和Ruby 1.9交集的一个小子集。此外,它还没有发布,事实证明,它的主页还不存在。然而,它是专门为嵌入而设计的,从两个意义上来说:嵌入到其他程序中,并且在内存很少的嵌入式设备上很有用。
正如你可能已经注意到的,如果应用程序运行在Java平台或CLI上,那么将Ruby嵌入到应用程序中要容易得多。Java平台和CLI都有 c++编译器,所以这个选项不是完全不可能的。否则,我会说Rubinius更容易嵌入,但更多的人尝试嵌入YARV,所以有更多的博客文章关于如何做到这一点。(或者,嵌入Rubinius是如此微不足道,没有人需要写关于它的博客文章。)很久以前,有人在为Lua VM开发Ruby的实现,但是这个实现没有任何进展。可以解决你所有的问题:-)
当然可以。使用SWIG是可能的,或者您可以为它创建自己的绑定(或者google查看是否有人已经完成了这项工作)。最大的问题是,你真的想这么做吗?ruby解释器相当笨重,接口也不是很好。
Matz正在开发一个名为mruby的可嵌入版本,它力求像Lua一样易于嵌入和轻巧。
是的,有可能。大多数标准库类型都是用C编写的,当你可以使用C时,你也可以使用c++。使用extern "C"
声明的函数来获得正确的绑定。当我使用与编译ruby解释器不同(不同版本)的c++编译器时,我遇到了很多麻烦。
这是pick ext书的一部分,涵盖了ruby扩展库:http://media.pragprog.com/titles/ruby3/ext_ruby.pdf
在一个开源的c++ web服务器项目中,我编写了一个ruby/rack适配器,用于使用rails服务器:https://github.com/TorstenRobitzki/Sioux/tree/master/source/rack
- 递归列出所有目录中的C++与Python与Ruby的性能
- 正在为Xtensa simcall函数编写回调函数
- 在程序中编写脚本来编写和编译代码
- 编写时C++中的输入重定向问题
- 在C++中,如何在类和函数(可能是模板化的)的头中编写完整的实现
- c++多进程编写一个唯一的文件
- 如何用C++编写BFS函数
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 如何编写一个使用n倍三元条件语句的C++布尔函数
- 为C++03编译器编写部分unique_ptr,该编译器与较新的编译器在公共代码库上运行
- 如何为 C 型字符串数组编写 getter 和 setter?
- 如何在没有函数的情况下编写此代码并使C++更简单?
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 如何使用OpenCV-C++编写*.mp4视频?
- 3-3. 编写一个程序来计算每个不同单词在其输入中出现的次数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 如何在 Ruby-C++ 扩展C++类中编写非静态方法
- 访问用 OCaml 编写的库,并从 Ruby 代码C++
- 我可以像用Lua一样用Ruby编写c++应用程序吗?
- 如何访问用c/c++编写的函数到ruby脚本