From: "U.Nakamura" Date: 2002-08-29T13:28:28+09:00 Subject: [ruby-list:35814] Re: 祝 1.7.3 But cast_256.so Segmentaation fault こんにちは、なかむら(う)です。 In message "[ruby-list:35811] 祝 1.7.3 But cast_256.so Segmentaation fault" on Aug.29,2002 10:30:30, wrote: | 1.7.2から1.7.3になりウキウキ気分で、Rubyの環境(拡張ライブラリ)を整えて | 動かしてみたら、cast_256(暗号ライブラリのバイナリ cast_256.so) | で致命的なエラーが発生しました。(純粋rubyスクリプトだと動作します。) (中略) | 何か拡張ライブラリ?の仕組みでも変わったのでしょうか?(想像) 1.7.3から(厳密には、1.7.3に変わる数日前から)、mswin32および mingw32では、Ruby本体のDLLのファイル名が変更されました。 これに伴い、全ての拡張ライブラリの再コンパイルが必要になって います。 大きな非互換性を伴う変更でしたが、Ruby 1.8へ向けての作業の一 環であるということで、ご了解をお願いします。 なお、この変更の目的は、mswin32版とmingw32版で、拡張ライブラ リをバイナリ互換とするためのものです。 なお、それはそれとして、1.7系では、時としてRubyのAPIが変更さ れたりして、拡張ライブラリのバイナリレベルでの互換性が損なわ れることがあるかもしれません。 というわけで、慌てず騒がず自前でコンパイルしなおすのが筋かも しれません。 # と言っても、環境やモノによっては難しいかも、ということは理 # 解してますが。 それはそれとして、件のcast_256(というかrcast_256かな?)ですが、 以下のパッチを適応して、 ruby extconf.rb nmake でrcast_256.soを生成できると思います。 単にコンパイルを通すだけのパッチで、ソースの中身はぜんぜん見 てないんですが、いちおう動く模様。 diff -u2prN cast_256/vc++/extconf.rb cast_256_patch/vc++/extconf.rb --- cast_256/vc++/extconf.rb Thu Jan 1 09:00:00 1970 +++ cast_256_patch/vc++/extconf.rb Thu Aug 29 13:11:27 2002 @@ -0,0 +1,3 @@ +require 'mkmf' + +create_makefile('rcast_256') diff -u2prN cast_256/vc++/rcast_256.cpp cast_256_patch/vc++/rcast_256.cpp --- cast_256/vc++/rcast_256.cpp Sun May 23 23:13:08 1999 +++ cast_256_patch/vc++/rcast_256.cpp Thu Aug 29 13:11:03 2002 @@ -111,5 +111,5 @@ extern "C" __declspec(dllexport) void In rb_define_const(mCAST_256, "DECRYPT", INT2FIX(DECRYPT) ); - rb_define_module_function(mCAST_256, "set_key",(unsigned long (__cdecl *)(void)) set_key ,1); - rb_define_module_function(mCAST_256, "crypt_block",(unsigned long (__cdecl *)(void)) crypt_block ,3); + rb_define_module_function(mCAST_256, "set_key",(unsigned long (__cdecl *)(...)) set_key ,1); + rb_define_module_function(mCAST_256, "crypt_block",(unsigned long (__cdecl *)(...)) crypt_block ,3); } それでは。 -- U.Nakamura