掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
外から利用する場合の DLLとEXEの違いについて (ID:50333)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> でDLLを作ってVBから呼ぶことがよく書いてあるのですが、ShellExecuteなど > からexeを呼ぶのとDLLにして呼ぶのとでは何が大きな違いになるのでしょうか? exeを呼ぶ場合は、自分とは別プロセスになるので、メモリ空間も別です。 大きな情報を渡したい時に、直にポインタを使えませんので、工夫が要ります。 頻繁に交信を必要とする用途には良くはないと思います。 dllを呼ぶ場合は、自分と同じプロセス内にdllが読み込まれるので、メモリ空間は同じです。 大きな情報を渡したい時に、ポインタを使えます。 頻繁かつ多量な交信をする用途には良いと思います。 > また、VC++で開発したプログラム(関数)をVBにまったく取り込んでコンパイル > することは不可能なのでしょうか? VC++などで作成したDLLを、Vbで作ったEXEファイル内部に取り込み、運用するという話でしょうか? それは無理です。 通常、DLLファイルとEXEファイルは分かれた状態で使います。 EXEのプログラムが必要とする時に、DLLがメモリ空間に取り込まれます。 > 今回はVBからVC++で作ったプログラムを利用する際のスタイルの違いについて > ご存知でしたら教えていただきたいのですが、本やウェブなどを調べるとVC++ Vbで作るEXEからVC++で作ったDLLを呼び出す、というシナリオを考えようと思います。 方法が複数あります。 ・Vb側のプログラムは、APIという形で純粋にDLLを利用する。 ・Vb側のプログラムは、OLEオ〜トメ〜ション(ActiveX DLL?)という形でDLLを利用する。 前者は、VB・MS Access・MS Excel・MS Word(Visual Basic for Applicationsと呼ばれるVB搭載製品)・Win32用C言語製品などから利用できる。 性質: ・Cのような、関数として機能を提供することも、C++のような、クラス(オブジェクト)を提供することも可能(但しC/C++からしか利用できない)。 長所: ・DLL内の関数の仕様は、基本的に作った人しかわからないので、他から流用される可能性が低くなる。 ・VC++などから利用したくなっても、比較的低コストで再利用できる。 短所: ・関数の仕様が分からないと、正しく利用できない。VBなどで使う場合もDECLAREで仕様を伝える必要がある。 後者は、前者の利用環境を含み、Windows Scripting Host・IE・IIS(ASP使用時)・.NET Frameworkなどからも利用できる。 性質: ・基本的にオブジェクトしか提供できない(IUnknownなど)。 長所: ・利用者はDLLの構造を考えなくて良くなる。一意なIDや名前のみでDLL内のオブジェクトを識別・作成できる。 ・呼び出しに必要な情報はDLL内に入っているので、DECLAREなど、別途定義する必要がない(パフォ〜マンスを選ぶ場合、そうしないことも可能)。 ・汎用的な物は再利用がきく。 ・DLLサロゲ〜トで包んであると、リモ〜トコンピュ〜タ上にオブジェクトを作成して操作できる。 短所: ・DLLはCOMの仕様にそって作成されなければならない(これは非常に面倒な作業だが、VC++などではウィザ〜ドの助けを借りると楽に作成できる。また、Vbでもこの種のDLLを作成できる)。 個人的には後者の方をよく使います。VB側にうっとうしい定義が必要なくなるからです。 長文を失礼。m(_ _)m
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.