DXRuby1.4.7で64bit対応されているということで使おうと思ったけど、
Windowが作れないエラーが出てしまうのでしばらく諦めてた
休みになんかしないと落ち着かないので動かないのを再調査したところ
64環境ではウィンドウが作れないことがエラーに起因しているみたいなので
その辺を調べてみた
「CreateWindow 64」みたいな適当な検索してみたら、StackOverflowで
以下のような記事があった。
なにやら
>WPARAM
と LPARAM
は UINT_PTR
と LONG_PTR で定義されている
>ポインターサイズとして定義されているので32bitと64bitじゃ
>サイズが違う
>UINTとLONGは、32bitと64bitどちらも同じサイズになる
ということらしくて、返ってくるポインタのサイズを考えれば大丈夫らしい
messagethread.cにウィンドウプロシージャMessageThreadWndProcがあって
こちらの定義が文字通り、UINTとLONGだった。
LRESULT CALLBACK MessageThreadWndProc( HWND hWnd,UINT msg,UINT wParam,LONG lParam )
↓ WPARAM/LPARAMに変更する
LRESULT CALLBACK MessageThreadWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
あとはビルド方法に従ってビルドをすれば、dxruby.soができあがるのでテスト用に別フォルダにコピーして、requireの行をローカルから読むように修正した。
おかげさまでサンプルは起動したので当初の目標は達成。
しかし、なぜ前回起動しないなーってときにこの部分に気づかなかったのか。
が、またdxruby起動するようになってよかったよかった。