D 始めました。 - C++クラスライブラリを使う

since: 2003-09-12 update: 2003-09-23 count: 10153

こんなところを見ている暇があれば 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ライセンスに従って配布します。

実用例として、 libBulletMLD言語版(弾幕360度と同時配布) を作りました。


home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h