From: kaori takahashi Date: 2003-10-27T12:18:47+09:00 Subject: [ruby-list:38677] Re: C/C++ からメソッドを呼びたいのですが どうもありがとうございます。 nobu.nakada@nifty.ne.jp wrote: > なかだです。 > > At Thu, 23 Oct 2003 22:59:15 +0900, > phosrin wrote: > > C/C++からRubyのメソッドを呼び出したいのですが > > 複数ファイルをロードして動かすと、エラーになってしまいま > > す。 > > どういうエラーでしょうか。 作成済みのインスタンスで、数十回メソッド呼出しを行うと、 (eval):15: [BUG] Segmentation fault ruby 1.8.0 (2003-08-04) [sparc-solaris2.8] でした。 教えていただいた方法に変更したところ、 /‥/sample.rb:15: [BUG] Segmentation fault ruby 1.8.0 (2003-08-04) [sparc-solaris2.8] 15行目は最終行のendです。 メソッド呼出しにはrb_protectを使用していますが、 rb_protect(do_func1, obj, &state); rb_funcall(obj, rb_intern("func1"), 1, val); rb_call rb_get_method_body search_method まできて、0x0をアクセスしてsignalが呼ばれて abort します。 > > > rb_load(rb_str_new2("sample.rb"),0); > > obj = rb_eval_string("Sample"); > > c = rb_funcall(obj, rb_intern("new"),1, val); > > obj = rb_path2class("Sample"); > c = rb_class_new_instance(1, &val, obj); > > のほうがいいかも。 > c の値を外部変数に保存して使用していましたので メソッドを呼び出す時に、毎回 rb_class_new_instanceを 呼ぶようにしようと思ってます。 > > -- > --- 僕の前にBugはない。 > --- 僕の後ろにBugはできる。 > 中田 伸悦