2009年03月24日
RMagick-2.9.0がWindowsで動かない
以前、rmagick-win32 のバージョン2.7.1(RMagick-2.7.1-ImageMagick-6.4.5-3-Q8)をインストールしておいたのを、2.9.0にアップデートしようとしたが失敗した(ダウンロード元)。
ImageMagickをアンインストールして、gem uninstall rmagick を実行した後にImageMagick-6.4.8-6-Q8-windows-dll.exe をインストールし、gem install -l rmagick-2.9.0-x86-mswin32.gem を実行してエラーなく完了したのにも関わらず、リサイズを行うスクリプトを走らせたところ、下記のようなエラーが発生。
ポップアップのエラーダイアログ
その後、調べたところ、こちらによるとどうも Ruby1.8.6 One-Click InstallerでRubyを入れた人だとこのエラーが出るらしい(私はこれに該当)。
リクツは、下記のようになっているようだ。
VC++ 2008なんて持っていないし、RMagickのためにRuby 1.8.6の環境をコンパイルして再構築、というのはやりたくないので、自分の環境をRuby 1.9に上げるまで Rmagic 2.7.1を使うことにした。
ImageMagickをアンインストールして、gem uninstall rmagick を実行した後にImageMagick-6.4.8-6-Q8-windows-dll.exe をインストールし、gem install -l rmagick-2.9.0-x86-mswin32.gem を実行してエラーなく完了したのにも関わらず、リサイズを行うスクリプトを走らせたところ、下記のようなエラーが発生。
ポップアップのエラーダイアログ
プロシージャエントリポイントtransparentPaintImageChroma がダイナミックリンクライブラリ CORE_RL_Magick_.dllから見つかりませんでしたコンソールに表示されるエラー
C:/ruby/lib/ruby/gems/1.8/gems/rmagick-2.9.0-x86-mswin32/ext/RMagick2.so: 127: 指定されたプロシージャが見つかりません。 - C:/ruby/lib/ruby/gems/1.8/gems/rmagick-2.9.0-x86-mswin32/ext/RMagick2.so (LoadError)もともと、RMagickはImageMagickとのバージョンの整合に関してシビアなところがある。なので、正しいバージョンのRMagickが入っていることを確認する。こちらの情報によると、DOSプロンプトから convert -list configure を実行してみて、LIB_VERSION_NUMBER is 6,4,8,6. という表示があったら正しいバージョンらしい。自分の環境でもこれを確認。なのにエラー。なぜだ?
from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from C:/ruby/lib/ruby/gems/1.8/gems/rmagick-2.9.0-x86-mswin32/lib/RMagick.rb:11
from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from C:/new/ruby/rb16A2.tmp:1
Complete(1)
その後、調べたところ、こちらによるとどうも Ruby1.8.6 One-Click InstallerでRubyを入れた人だとこのエラーが出るらしい(私はこれに該当)。
リクツは、下記のようになっているようだ。
- RMagick 2.7.1 Win32 gemは VC++ 2005 でコンパイルされている。
- Ruby1.8.6 One-Click Installerは yet a 3rd compiler でコンパイルされている。
- One-Click Installerで入れたRuby環境ではRMagick 2.7.1 Win32 gemは問題ない。
- RMagick 2.9.0 Win32 gemは Microsoft Visual C++ 2008 SP1 Redistributable Package でコンパイルされている。
- One-Click Installerで入れたRuby環境では、VC++ 2008が入っていない限り、RMagick 2.9.0 Win32 gemはエラーになる。
VC++ 2008なんて持っていないし、RMagickのためにRuby 1.8.6の環境をコンパイルして再構築、というのはやりたくないので、自分の環境をRuby 1.9に上げるまで Rmagic 2.7.1を使うことにした。
カテゴリ:Ruby