Ruby拡張ライブラリを作成してみる
公開日:
:
Ruby
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
昼休みにちょいとRuby拡張ライブラリを作成してみた。
sample.cを作成
#include <ruby.h>
VALUE gunyo(VALUE self, VALUE va, VALUE vb, VALUE vc){
VALUE r;
int a, b, c, d;
a = NUM2INT(va); b = NUM2INT(vb); c = NUM2INT(vc);
d = a + b + c;
r = INT2FIX(d);
return r;
}
void Init_Unyo(void){
VALUE rb_cHoge;
rb_cHoge = rb_define_class("Hoge", rb_cObject);
rb_define_method(rb_cHoge, "gunyo", gunyo, 3);
}
extconf.rbを作成
require "mkmf"
create_makefile("Unyo")
extconf.rbを実行
% ruby extconf.rb
Makefileが作成される。
makeを実行
% make
Unyo.bundleが作成される。
% file Unyo.bundle
Unyo.bundle: Mach-O bundle i386
hoge.rbを作成させる
require "Unyo.bundle"
hoge = Hoge.new
d = hoge.gunyo(1,2,3)
print d,"\n"
hoge.rbを実行する
% ruby hoge.rb
6
やった!!
関連記事
- PREV
- 関数からハッシュを返してみる
- NEXT
- 各種リテラルの型などについて実験