トップ «前の日記(2012-04-29) 最新 次の日記(2012-05-02)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2012-04-30

_ MSWin64用RMagicの作り方

  1. ImageMagickのソースからのインストール方法を参考にして、DLLを作成する。
    1. 最初にconfigure.exeを作る。Visutal Studio 2010でVisutalMagick\configureのconfigure.slnを開いて2010用のslnに変換する。
    2. 構築オプションをx64に変える。ビルドプロパティのリンクにmachine:i386が記述してあるため、構築の最後でエラーになるため、削除する。
    3. デバッグバージョンだと実行の最後にスレッドのassertに引っ掛かって面倒なので(調べるの面倒なんで調べていないが、多分、ちゃんと殺していないのだと思う)リリースバージョンを作る。
    4. configure\configure.exeを実行する。releaseディレクトリに作られるのではないので注意。
    5. Dynamic Multi-threaded DLL runtimeをチェックする(デフォルト)。Use X11 stubs……をチェックする。
      このとき、staticライブラリを作ると、MFC関係のスタブを使うようになって(解消方法はあるかも知れないけど調べるの面倒なのでやらない)最終的にRMagick.soのリンクに失敗するので注意。
    6. Build optionsではBuild 64-bit distributionをチェックする。 Decorate exe files with build optionsをチェックすると、convert.exeなどが、UTIL_convert.exeのように、構築オプションがプレフィックスされるので、構築オプション別にテストしたいような場合を除いてチェックしない。Generate all utitlity……をチェックすると絶対パスが埋め込まれるのでこれもデバッグ時を除いてチェックしてはならない。
      Generate Visutal Stuio 7 formatはチェックする。チェックしないとVC6用になる。
  2. Visutal Studioで、VisutalMagick\VisutalDyanamicMT.sln(ステップ1で生成される)を読み込む。2010用変換が行われる。
    1. 構成マネージャを使ってx64をターゲットに変える。全部変える。
    2. ビルドする。
    3. VisualMagick\bin にDLLとexeが作られる。DLLとconvert.exeをPATHが通った場所へコピーする。
    4. VisualMagick\lib にインポートライブラリが生成されているので、LIB環境変数が通ったところへコピーする。
    5. ImageMagick-..\magickのすべてのヘッダファイルをINCLUDE環境変数が通った場所へmagick\*.h としてコピーする。
    6. ImageMagick-..\wandのすべてのヘッダファイルをINCLUDE環境変数が通った場所へwand\*.h としてコピーする。
  3. コピーしたmagick\magick-config.h の174行目を修正する。Visual Studio 2010ではssize_tが定義されているので、extconf.rb(conftest.c)でエラーになる。
    -#if !defined(__MINGW32__)
    +#if !defined(__MINGW32__) && !defined(ssize_t)
    
  4. RMagickをクローンするか、zipを取得する。
    1. RMagickのextconf.rbを直す。
    2. 以下のif式を削除する。
      if RUBY_PLATFORM =~ /mswin/
        abort <<END_MSWIN
       ...
      end
       
    3. vcvars32系のツールを知らない人が作ったらしいので、無駄な$CPPFLAGS(182行目)や$LDFLAGS(183行目)のセットをしている行があるので、削除する。
  5. ruby setup.rb で soが生成される。exampleディレクトリの中を実行するのがテストのようだ。で、ちゃんと動作しているようだ。

とりあえず、gemを作ってみたので、試したい人はどうぞ。

  • rmagick-0.0.0-x64-mswin64-100.gem
  • imagemagick-6.7.6-bin.zip
  • imagemagick-6.7.6-bin.zipの内容をPATHが通ったディレクトリへ全部コピーする(不要なやつもあるかも知れないけど面倒なんで調べていない)。
  • gemを適当なところに配置して、gem install rmagick (ローカルインストール)する(もちろん、mswin64-100 が前提)。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|

ジェズイットを見習え