2006-04-07
Ruby/SDL + Exerb ではまる
Ruby/SDL のインストール
Download Ruby/SDL から「Win32's binary(ver 1.0.0) and ruby 1.8.4 interpreter package 」をダウンロードして解凍。
ruby ディレクトリを「 E:\ruby 」にコピー。 「 E:\ruby\bin 」にパスを通して終了。
Exerb のインストール
Exerb サイトから 「exerb-3.3.1.tar.gz」をダウンロード。ダウンロードしたファイルを解凍したディレクトリ(setup.rbがあるディレクトリ)にコマンドプロンプトで移動して下記を実行。
ruby setup.rb config ruby setup.rb setup ruby setup.rb install
インストールは完了。
ball.rb から ball.exe を作成
ruby -r exerb/mkexr ball.rb
を実行。レシピファイル ball.exr が作成される。
ruby E:\ruby\bin\exerb ball.exr
で ball.exe が作成される。
問題点
うまくいったかと思って、ここでできた exe を別の Windows で実行すると SDL 関係の DLL が見つからないというエラーが発生。
レシピファイル ball.exr に SDL 関係の DLL を追加。
# generated by mkexr.rb set_kcode none add_ruby_script ball.rb add_ruby_script forwardable.rb E:/ruby/lib/ruby/1.8/forwardable.rb add_ruby_script rubysdl_aliases.rb E:/ruby/lib/ruby/site_ruby/1.8/rubysdl_aliases.rb add_ruby_script sdl.rb E:/ruby/lib/ruby/site_ruby/1.8/sdl.rb add_extension_library sdl.so E:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt/sdl.so add_resource_library E:/ruby/bin/SDL.dll add_resource_library E:/ruby/bin/SDL_ttf.dll add_resource_library E:/ruby/bin/iconv.dll add_resource_library E:/ruby/bin/zlib.dll add_resource_library E:/ruby/bin/SDL_image.dll add_resource_library E:/ruby/bin/SGE.dll add_resource_library E:/ruby/bin/jpeg.dll add_resource_library E:/ruby/bin/sdlskk.dll add_resource_library E:/ruby/bin/zlib1.dll add_resource_library E:/ruby/bin/SDL_mixer.dll add_resource_library E:/ruby/bin/freetype-6.dll add_resource_library E:/ruby/bin/libpng13.dll add_resource_library E:/ruby/bin/smpeg.dll
このレシピファイルで exe を作成するとサイズが 3.5 M ほどの exe が作れる。しかしこれを実行すると、
exerb: the loaded recourse table is too big. (Exerb::RuntimeError)
というエラー。ぐぐったら exerb のソース が引っかかって、これを見ると、
42: LOADED_LIBRARY_ENTRY g_loaded_library_table[32] = {0};
と 32 個にハードコーディングされている模様。この最大数の問題だろうか。
しかし Ruby/SDL で実装したシューティングゲーム を見るとちゃんと exe 化できているから、きっとうまくやる方法があるはずなんだけど……。