読者です 読者をやめる 読者になる 読者になる

WHITELEAF:Kindle応援サイト

KindleでWEB小説を読もう! Narou.rb 公開中

ocra + Ruby/SDL

Ruby ocra

Ruby/SDL を ocra で exe 化した際にはまったのでメモしておきます。
(Ruby1.9.1を想定しています。1.8 なら exerb でいいんジャネ?)

Ruby/SDL を使用したスクリプトを ocra で exe にまとめようとすると、
sdl_ext.so が見つからないというエラーが発生します。
これは Ruby/SDL を普通にインストールした場合、

.so
.dll
.rb

なファイルはそれぞれ

ext
dll
lib

というディレクトリに分けて配置されます。
> ruby foo.rb
と実行した際には $: にはきちんと ext dll lib それぞれパスが通っているので、
exe 化の際にはもちろんリンクするべきファイルは拾ってこれますが、
いざ exe を実行した場合、$: には lib しかパスが入っていません!
DLL に関してはテンポラリディレクトリ下の bin ディレクトリ(すなわち ruby.exeがあるところ)
に展開されるので問題はないですし、$: に lib ディレクトリが入っているので
sdl.rb も発見することができますが、ext は忘れ去られているので sdl_ext.so が見つからないので
エラーになります。

なので。

ext/sdl_ext.so


sdl.rb のある lib ディレクトリに移動させておきましょう。
これだけで解決します。