DXRubyコンパイル

いや、とんでもなく時間がかかった。苦労した。
俺が間違っていただけなのだが、わかっている人には簡単なことでも、わかってない人には無理難題だ。
そして、わかるようになる方法がよくわからない。
試行錯誤して悩む経験が必要ということなのか。
俺はこういうのを「敷居が高い」と表現する。
わかってない初心者が変な質問をしてきたりするのは面倒だ。確かに。
んでも、オープンソース関連のプロジェクトってのは、わかってる人の集団で構成されていて、ある一定水準以上じゃないと仲間に入れません、という態度なのがどうにも。
間が無いんだな。先端を行く人と、これから始める人の。
洗練されればされるほど、先端はずーっと先に行くし、これから始める人は常に地べたスタートなのだから、その距離は開く一方だ。
こういった部分にどう対処していくか、ってのは難しい問題だ。


さて、今日はDXRubyを配布用にコンパイルした。
誰かの参考になるかもしれないのと、自分用メモとして以下に。


VisualStdio2008をインストール。
DirectX9SDKをインストール(ウチにはずっと前に入れたやつがあった)。
環境変数includeとlibにDirectX9SDKのディレクトリを追加。
http://www.garbagecollect.jp/ruby/mswin32/ja/
からruby-1.8.6-p287-i386-mswin32.zipをダウンロードして解凍。
解凍ディレクトリ\lib\ruby\1.8\i386-mswin32のconfig.hの先頭3行をコメントアウト(VC6以外をはじくから)。
解凍ディレクトリ\dxrubyを作成し、ソースとextconf.rbをコピー。
dxrubyに移動して..\bin\ruby extconf.rbを実行。
できあがったMakefileのCFLAGSをCFLAGS = -MT -Zi -O2b2xg- -G6 に変更(MDをMTに)。
スタートメニューのVisualStdio2008のところにあるコマンドプロンプトでコマンド窓を起動。
nmakeを実行。


以上でそこにdxruby.soができた。
MDをMTに変更しないと、msvcr90.dll(動的リンクのランタイム)を参照しようとして、VisualStdio2008が入っていない環境では動かなくなるから、MTオプションで静的リンクさせる。
静的リンクすることで56kBほどサイズが増えたけど(39kB→96kB)しょうがなさすぎる。
で、VisualStdio2008が入っていないノートPCにdxruby.soと、dxrubyを使うRubyスクリプトをコピーして実行したら、d3dx9_34.dllが無いとかエラーが出た。
これは、DirectX9SDKのバージョンよりもノートPCのDirectX9のほうが古いからで、DirectX9を最新に更新したら動いた。
できれば今の最新のほうがいいんだろうけど、動作環境は古いほうがいいような気もする。
とりあえずこれで動いた。
後から気付いたけどコンパイルするDXRubyのソースが古かった。
最新にしても大丈夫だとは思うが・・・。
まあ、今日の作業はここまで。