初めて質問させていただきます、入澤と申します。
基本的な質問になるかと思いますが、ご容赦ください。
自作クラスを集めたDLLを作成し、このDLLを他の.exeで
動的にリンクし.exe内で利用したいのですが、可能でしょうか?
検索で以前似たような質問をされている方がいらっしゃったよう
なのですが結論まで至っていないようなので質問させていただきました。
環境はWindows2000上VC++6.0です。
以上、ご回答の程宜しくお願い致します。
可能か不可能かで言えば可能です。
でも、クラスをエクスポートするのはお薦めではありません。
クラスをエクスポートした .dll は C++ でしか再利用できないですし、クラスメンバの
エクスポート名なんかはコンパイラのバージョンによって変わるでしょうから、.exe
と .dll は同じバージョンのコンパイラでビルドしたものを組み合わせることになりま
す。
なら、単純に一緒にビルドしてしまった方が楽だと思います。
あるいは、利用範囲の広いコンポーネントなら COM オブジェクトにすると言うのも手で
す。
# 可能か不可能かで言えば可能です。
光明が見えた気がします。(苦笑)
# あるいは、利用範囲の広いコンポーネントなら COM オブジェクトにすると言うのも手で
# す。
質問させていただいた背景を申しますと元のプログラムがありその一部を切り出してライブ
ラリ化しようとしているのですが、開発期間が短いので(私的基準で)単純に既存のクラス
をDLLなりSOなりに詰め込んで提供する形で進めています。
渋木宏明(ひどり)様、ご回答ありがとうございました。
「使うな」とは言いませんが、単純に関数をエクスポートする場合に比べてリスクや制
限が多くなることを、きちんと理解して実践してください。
場合によっては、非常に発見が困難な障害を作り込むことになりかねず、ほとんどの場
合、最終的にそのツケは「運用」で回避するほかありません。
なお、DLL に関する技術情報が
http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/vccore/html/_core_DLL_Topics.asp
にあるので、参考にしてみてください。
横から失礼します。
> http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/vccore/html/_core_DLL_Topics.asp
こちらのサイトでDLLについて読ませて頂いたのですが、上記で言われているCOMオブジェクト
とは、どのようなものでどういった利点があるか教えていただけないでしょうか。
COM については
http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/vccore/html/_atl_Introduction_to_COM.asp
で解説されています。
簡単に言えば、C++ のクラスに相当する仕組みを、プログラミング言語に依存せずに再
利用可能とするための技術です。(もちろん、言語処理系が COM に対応していることは
必要)
VC で書いたコンポーネントを VB で利用することもできるし、その逆も可能です。
また、Delphi や ActivePerl などの言語も COM コンポーネントを扱うことが出来ま
す。
親切に概略まで丁寧に説明して頂き、ありがとうございます。
紹介されたサイトを拝見してたいと思います