現在、BorlandC++にSDLmmをポーティングしている。
作業の流れを以下に示す。

1.SDLのダウンロード後、アーカイブ内のBorland.zipの解凍。その中に入っているインポートライブラリを使った最小SDLアプリケーションのコンパイルを行った。

http://ilaliart.sourceforge.jp/arc/SDL_sample.zip

2.その他、SDL_mixer、SDL_image、SDL_ttfをダウンロードして、ヘッダを入手、SDLのincludeフォルダに突っ込む。

3.SDL_ttfのEBDTの問題の解決のため、SDL_ttfを再コンパイル。とりあえず下のURLにDLLのバイナリを一式コンパイルして上げて置いたので、試してみたいかたはどうぞー。
なお、インポートライブラリに関しては、SDLアーカイブ内に入っていたものをそのまま利用できるが、一応念のためにそれも入れておく。

http://ilaliart.sourceforge.jp/arc/SDL_dlls.zip

EBDTの問題については下記URLを参照して欲しい。文字列のルビ振り時に問題となる。

http://ilaliart.sourceforge.jp/tips/ttf_mini.html

なお、検証用のプログラムは以下からダウンロードして欲しい。
DWORDの定義が足りないと言われるので、windows.hヘッダファイルを読み込ませてあげること。

http://kirara.k1.xrea.com/arc/ttf_win.zip

//===================================================

この後なのだが、SDLmmがコンパイルできない状態(というか、面倒なので先に進んでいません)。

次の点でひっかかっています。
・SDLmmコンパイル中にを読み込むと、WINGDIAPIの宣言の重複が見つかったと怒られます。少し調べればなんとかなりそうな問題ではあるけれど。

なお、VC++.Net2003で作成したDLLは、バイナリの構造が従来のCOFFとは異なるため、BorlandC++で採用しているOMFへの変換がimplibだけでは行えないような状況です(これを見越してMicrosoftはやったのだろうか…そうだとしたら極悪ですが)。
一応、dumpbinでDLLがエクスポートしている関数を列挙後、defファイルを作成し、libを使って新COFF→旧COFFへの変換を行おうとしたのですが、.Net2003ではすでにそれさえも出来ないようになっているようで、OMFへの変換はかなり絶望的です。DigitalMarsのimplibを使えばできるという噂もありますが、こっちはまだ試していません。

なので、またVC++6.0を入れて、implibでOMFのインポートライブラリを作ってしまおうかと思っています。

むむぅ、意外とBorlandはむずいんだな。

コメント