こんなところを見ている暇があれば SWIG for D をお試しすることをおすすめします。
D から C++ ライブラリを使うための ヘッダと importファイル生成スクリプトのセットを作りました。 d_cpp.tar.bz2。
簡単な説明を。
D からは C++ のクラスライブラリは参照できません。 extern(C++) 的なものをサポートしてくれるとありがたいんですけど、 まあそれまでの一時しのぎをしたいのです。
C の関数なら D のインポートファイルを書けば D から使え、 C++ の関数は extern "C" 宣言により C-linkage にすることができます。 というわけで、C++ ファイルにマクロを書いて、 マクロで展開して C 関数を作成して、 同時にその C++ ファイルを perl でパースして D のインポートファイルを生成しようというものがこれです。
クラスライブラリの使用法としては、 クラスの new, delete, method 呼び出し、static method 呼び出し、 を主に想定しています。
仮想関数のコールバックモデルを使うことが意図されている クラスライブラリも、非常に限定的な方法ながらサポートされています。 (具体的には、C++側で継承したクラスを作り、 C 関数ポインタを D 側から渡すことで実現)
テンプレートライブラリも OK ぽいです。
まあ、後は中を見て下さい。
修正BSDライセンスに従って配布します。
実用例として、 libBulletML の D言語版(弾幕360度と同時配布) を作りました。
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。