ハマった、はまった。Image::Magick
▶ in ひとりごと posted 2009.06.08 Monday / 21:53
はじめてのx64 IISへの挑戦でおおハマリでした。
先程も独り言でちょっと触れたImage::Magickですが、PerlのバージョンやImage::Magickのバージョンを変えても、perl -e "use image::magick"で以下のエラーが出てしまい、手詰まりでした。
パスが通っていないとか、その類のエラーではない事はメッセージから明白だったのですが、いかんせんx64の環境でx86のPerlとImage::Magickを使っているので問題の切り分けが出来ませんでした。しかも、x86の実験環境ではうまく動いているので原因の切り分けに非常に時間がかかりましたが、無事解決しました。
結論としてMicrosoft Visual C++ 2008のランタイムを明示的にインストールする事で解決しました。というのは、Image::MagickのインストールされているフォルダにはVC90系のDLLが多数格納されている事を見つけ、x64とx86で環境の違いで動作不能になるのならこれしかないと踏んだからです。ただ、Microsoft Visual C++ 2008のランタイムはx64版とx86版があり、僕は両方ともインストールしてみたところ見事Image::Magickが動作しました。
基本といえば基本ですが、えらいハマりました。x86環境で実験環境を整えても検証は出来るだろうという甘い考えが引き起こしたアクシデントでした。
ダウンロード:Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
ダウンロード:Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64)
先程も独り言でちょっと触れたImage::Magickですが、PerlのバージョンやImage::Magickのバージョンを変えても、perl -e "use image::magick"で以下のエラーが出てしまい、手詰まりでした。
Can't load 'C:/Perl/site/lib/auto/Image/Magick/Magick.dll' for module Image::Magick: load_file:このアプリケーションのサイド バイ サイド構成が正しくないため、ア
プリケーションを開始できませんでした。詳細については、アプリケーションのイベント ログを参照してください。 at C:/Perl/lib/DynaLoader.pm line 202.
at -e line 1
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
パスが通っていないとか、その類のエラーではない事はメッセージから明白だったのですが、いかんせんx64の環境でx86のPerlとImage::Magickを使っているので問題の切り分けが出来ませんでした。しかも、x86の実験環境ではうまく動いているので原因の切り分けに非常に時間がかかりましたが、無事解決しました。
結論としてMicrosoft Visual C++ 2008のランタイムを明示的にインストールする事で解決しました。というのは、Image::MagickのインストールされているフォルダにはVC90系のDLLが多数格納されている事を見つけ、x64とx86で環境の違いで動作不能になるのならこれしかないと踏んだからです。ただ、Microsoft Visual C++ 2008のランタイムはx64版とx86版があり、僕は両方ともインストールしてみたところ見事Image::Magickが動作しました。
基本といえば基本ですが、えらいハマりました。x86環境で実験環境を整えても検証は出来るだろうという甘い考えが引き起こしたアクシデントでした。
ダウンロード:Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)
ダウンロード:Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64)