From: "藤本尚邦 / FUJIMOTO Hisakuni" Date: 1998-05-28T01:04:39+09:00 Subject: [ruby-dev:2768] Re: experimental release 1.1b9_21 藤本です、こんにちは。 From: "MAEDA Shugo" Subject: [ruby-dev:2761] Re: experimental release 1.1b9_21 Date: Wed, 27 May 1998 01:30:51 +0900 > 前田です。 > > >> のようにkconvだとOKなのですが、socketだとNGです:-( > >> # socketの場合libnetをリンクしてるせいなのかな...。 > > > > について原因追求はしてないのですが、現象としてはrb_define_class()を > >呼ぶときにNGになるみたいです。単純に ... > >だとNGになります。さらにこの問題が起きるのはなぜかIntel版だけみたいで、 > >PowerMac版はどちらもOKです。 > > cObjectはexportされてるんですよね。 > うーん、なぜだろう。 libruby.so側とmodule側のcObjectが違うところを指してるんじゃないかと 思って、object.cのInit_object()の最後とテスト用モジュールの初期化関数 Init_testmodule()に printf("cObject = %0X\n", cObject); printf("rb_define_class = %0X\n", rb_define_class); printf("rb_define_module = %0X\n", rb_define_module); を埋め込んでみました。結果は、PowerPC版では期待どおりまったく同じ値が 表示されるのですが、Intel版では下のように違う値が表示されました。 $ ruby -r testmodule -e exit cObject = 8003DD18h rb_define_class = EC23F20Fh rb_define_module = EC23F2EAh cObject = 556425FFh rb_define_class = EA00154Eh rb_define_module = EA001554h というわけで、module側のcOjbectとlibruby.so側のcObjectがまるで別のと ころを指してるみたいです。ただ、rb_define_moduleの値が違うのに動いてる ので、この確認の仕方自体問題があるかもしれません。 この話は、ここよりもBeTalk-J MLの方で解決できる可能性が高そうな内容 だと思うので、そちらにruby-1.1b9_23がBeOS R3に対応しましたよとアナウン スして話題を振ってみます。 ============================================================= 藤本尚邦 FUJIMOTO Hisakuni hisa@imasy.or.jp =============================================================