小林です。 Ruby本450頁以降のrb_obj_call_init()の引数が実際と異 なるようですが? ま、やれば分かるので問題はないです。 今、みようみまねで拡張ライブラリの作成に挑戦してい るのですが、以下のようにうまく行きません。 やりたいことは、あるクラス(仮にTEST)を作り、それ の加算をやりたいのです。 a = TEST::new b = TEST::new c = a+b # cはa,bと同じクラスのインスタンス(新規) そこで、 TEST_Init()に以下のように定義しました。 cTEST = rb_define_class("TEST", rb_cObject); rb_define_singleton_method(cTEST, "new", TEST_new, 2); rb_define_method(cTEST,"+",TEST_add,1); さらに、TEST_add()では ............... obj = rb_obj_alloc(cTEST); rb_obj_call_init(obj,0,0); v = malloc(......); obj = Data_Wrap_Struct(obj,0,TEST_delete,v); return obj; とするとrubymw.dll(WinNTでやっています)のst.cの216行目で アクセス違反になります。st_lookup(table, key, value)内で、 hash_val = do_hash(key, table); を実行しますが、このときのtableが未定義なのでアクセス違反 になります。 因みに、 pv = malloc(......); obj = Data_Wrap_Struct(obj,0,TEST_delete,pv); の2行をコメントにするとOKです(取りあえず死なないという意味 です)。 a+bの結果としてcを新たに、独自構造体を付加して、生成したい のですが、やり方を教えていただけますでしょうか。 上記の2行はTEST_new()メソッドでも同じように割り当てています がこちらはOKなので、obj = rb_obj_alloc(cTEST)あたりの使い方 が悪いとは思っているのですが? 小林 茂雄 E-Mail: shigeo / tinyforest.gr.jp Home Page: http://www.tinyforest.gr.jp