pegacorn
subsc****@gmail*****
2011年 12月 18日 (日) 23:01:04 JST
結論から言うと、動きました! 以下、やったことを書きます。 2011年12月18日16:09 pegacorn <subsc****@gmail*****>: > 2011年12月18日10:25 Masahiro Kitajima <katon****@katon*****>: >>> > ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mswin32] >>> >>> 今手元にあるのは Visual C++ 2010 でビルドしたものですが、 >>> 別のマシンで Visual C++ 2008 でビルドしたものでも同様でした。 >> >> 私のは VC++ 6.0 でビルドしています。 (1)ruby, ExerbコアをVisual C++ 2008でビルド →EXE自体が起動しない (2)[exerb-dev:0570]の村瀬さんのパッチを当てる →EXEは起動するようになったが、requireでSEGV(振り出し) (3)Exerbコアのバージョンをrubyと同じ1.8.7-p352にあげる →変わらずSEGV (4)以下のパッチを当てる →REXMLを使ったサンプルスクリプトが動いた! VC++2008では「msvcr90-ruby18.dll」、VC++2010では「msvcr100-ruby18.dll」のように rubyのDLL名が変わるので、(4)は必須だと思います。 それ以外は必要なのかどうかわかりません。 (4)のパッチ: --- exerb-5.3.0/src/exerb/exerb.cpp.ORG 2010-12-26 08:11:42.000000000 +0900 +++ exerb-5.3.0/src/exerb/exerb.cpp 2011-12-18 21:35:48.819475200 +0900 @@ -552,7 +552,7 @@ #ifdef RUBY19 ::exerb_replace_import_dll_name(&info, "msvcrt-ruby19.dll", self_filename); // for an extension library on dynamic linked ruby #else - ::exerb_replace_import_dll_name(&info, "msvcrt-ruby18.dll", self_filename); // for an extension library on dynamic linked ruby + ::exerb_replace_import_dll_name(&info, "msvcr90-ruby18.dll", self_filename); // for an extension library on dynamic linked ruby ::exerb_replace_import_dll_name(&info, "cygwin-ruby18.dll", self_filename); // for experiment ::exerb_replace_import_dll_name(&info, "cygruby18.dll", self_filename); // for experiment #endif -- pegacorn