Ruby使用C++扩展实例(含C++扩展代码示例)
程序员文章站
2022-11-14 22:19:45
早年写过用c++ + swig写ruby插件的文,但实际中还是以原生c++写ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下...
早年写过用c++ + swig写ruby插件的文,但实际中还是以原生c++写ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。
建立 extconf.rb
复制代码 代码如下:
require 'mkmf'
$libs = '-lstdc++'
create_makefile 'foo'
建立 foo.cc
复制代码 代码如下:
#include <ruby.h>
value plus(value self, value va, value vb)
{
int a = num2int(va);
int b = num2int(vb);
return int2num(a+b);
}
extern "c" void init_foo()
{
value foo = rb_define_module("foo");
rb_define_module_function(foo, "plus", ruby_method_func(plus), 2);
}
生成扩展 foo.so
复制代码 代码如下:
$ ruby extconf.rb
$ make
# 如果要安装至site-ruby
$ make site-install
测试文件 test.rb
复制代码 代码如下:
require 'foo.so'
puts foo.plus(3,4)
$ ruby test.rb
7
上一篇: 来,看看MySQL 5.6, 5.7, 8.0的新特性
下一篇: Ruby的基本语法学习总结