shinobi サーバは外部 (もろこしヘッド) からファイルに直リンクすることが出来ないので、適当にページを作ってみました。
 → Download - cpp2c2d.zip (193KB)


 そんなわけで Cpp 2 C 2 D (の小さなサンプル) です。
C++ で書かれたライブラリもこうすれば D で使えるのかなーと思って試してみたら、わりと成功気味です。
というかコーディング中に shinh さんの「D 始めました。- C++ クラスライブラリを使う」に気付きました。やりたかったのはまさにコレ。
 実際にやってみると意外な落とし穴もあったりするので、このコード片が誰かの参考になってくれれば幸い。
D ⇔ C++ (C) 間での文字列のやり取り的な感じのソレも組み込んでみました。
 ctest.exe が C で書かれたテストプログラム、
 dtest.exe は D で書かれたテストプログラム。

サイズの違いは 22.5 KB。速度の違いは計測してませぬ。あ、C++ 版書くの忘れた。まあいいか。

 使用ツールはこんな感じだった。
o Visual C++ 2005 Express Edition
 → cl.exe && link.exe && dumpbin.exe && nmake.exe

 C/C++ 用ライブラリの生成や、.def ファイル作成のお供にどうぞ。
o Borland C++ Compiler 5.5.1
 → implib.exe

 DLL から D 用の .lib を生成するときにでも。
o Digital Mars D Compiler 1.010
 → dmd.exe

 こ れ を す て る な ん て と ん で も な い !
o Digital Mars .h to D Migration Tool 8.48.10n
 → htod.exe

 C/C++ 用に書かれたライブラリのヘッダを D のモジュールに変換する際に。