- ベストアンサー
C++BuilderやDelphiでVC++用のDLLの作成
C++Builderの画面から新規作成からDLLウィザードを選ぶと、VC++スタイルのDLLを選択して作成できるようになっています。VC++用のDLLを作成出来るとは書かれていません。実際、VC++コンパイラからリンクを拒否されます。 また、VC++用のインポートライブラリをCOFF形式からBorland用のOMF形式に変換するユーティリティCOFF2OMF)は存在していますが、OMF形式をCOFF形式に変換する手法を見かけません。 変換方法を書いているWEBや雑誌記事とかを紹介してください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
C++BuilderのDLLウィザードでの「VC++スタイル」はヘルプにあるようにエントリポイントが DLLMain になるだけです。 DLLはC++Builderで作成してもVisualC++で作成しても、どちらからも利用することができます。 MFC拡張など利用する側に対応が必要なDLLは別ですが。 C++BuilderとVisualC++ではインポートライブラリに互換性がありません。 C++Builder の場合は付属のツール implib.exe でDLLからインポートライブラリを生成できますが、VisualC++では簡単な方法はありません。 VisualC++での正攻法は LIB.EXE を使ってインポートライブラリを作成することですが、DEFファイルを書いてやらないといけません。 http://bme.t.u-tokyo.ac.jp/members/manabu/MKL_BCC/mkl_BCC.html のdllからふるいCOFF形式のlibを作成するのところ。 http://www.sun-inet.or.jp/~yaneurao/dlang/Chapter-05.html#050800000000 がもう少し分かりやすいかもしれません。 私の場合は LoadLibrary(), GetProcAddress() で動的に呼び出すか、同じ定義の関数をエクスポートするダミーのDLLを作ってインポートライブラリを得ます。
お礼
広く解決策を説明していただき有難う御座います。以前、VC++のdllをBorlandコンパイラに取り込むときに、DEFファイルを編集したことがありますので、自分の問題は解決できそうです。また、動的呼び出しとか、ダミーの件も、かなり参考になりました。 有難う御座います。