Windows(MSWIN32)用のRuby拡張ライブラリを作る方法
MSWIN32用(cygwin用じゃなくて)のRuby拡張ライブラリ(ダイナミックライブラリ)を作る方法がなかなか分からなくて苦戦したので、せっかくだからここにその方法をメモしときます。
ちなみに、Linuxの場合はこう。
- 拡張ライブラリの内容をC/C++で記述する
- Makefileを生成するためのRubyスクリプトextconf.rbを作る
- Makefileを生成する
$ ruby extconf.rb - 拡張ライブラリをコンパイルする
$ make - 拡張ライブラリをインストールする
$ make install
それが、MSWIN32の場合になるとこう。
- Linuxの場合と同じ
- 同上
- 同上
- Microsoft Visual Studio等をインストールしたフォルダ以下にあるvcvars32.batを実行して、VC++でコンパイルする環境を整える
(Microsoft Visual Studio .NETがインストールされている環境下ではC:\Program Files\Microsoft Visual Studio .NET\Vc7\bin\vcvars32.batを実行すればよい)*1 - 拡張ライブラリをコンパイルする
>nmake - 拡張ライブラリをインストールする
>nmake install
最初のうち「拡張ライブラリの作り方」で探してたら全然見つからなかったんですが、MSWIN32でのコンパイル方法を探す方法に切り替えたらRuby Install guideにぶつかって、それ読んでやっと分かりました。nmakeなんてのがあったんですね……Windowsプログラミングなんてほとんどやったこと無かったんで、なかなか気付きませんでした。
*1:単にnmakeのあるフォルダにパスを通すだけではDLLが足りないというエラーが出てしまうので注意。