ruby使用c++擴展例子

1.extconf.rb

require 'mkmf'

$libs = '-lstdc++'

create_makefile 'foo'

2.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);
}

3.生成so文件

$ ruby extconf.rb
$ make site-install

4.測試文件 test.rb

require 'foo'

puts Foo.plus(3, 4)

5.運行及結果

$ ruby test.rb
7
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章