- PR -

exeからDLLの呼び出し

投稿者投稿内容
さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-06-05 09:12
VB2005にて開発をしております。

そこで、exeからDLLで作った画面を呼び出すという処理を作ってます。
通常VB2005では、参照設定に追加をすればいいんですが、その方法の場合
起動時のレスポンスが悪くなるということで、それ以外の方法を調べているんでいるんですが
なかなか見つかりません。

どこかにいいサンプルありませんでしょうか?

ちなみに、exeもDLLもVB2005です



[ メッセージ編集済み 編集者: さっちん 編集日時 2007-06-05 10:00 ]
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-06-05 10:02
アセンブリをロードするときに検証などをするんでしょうから、確かに少しの時間はかかるでしょうが、そんなに違うものですか?
exeからDLLを参照する場合と、exeとDLLの機能を全て一つのアセンブリに入れた場合でどれくらい違います?
それで同じ速さなら「exeからDLLで作った画面を呼び出す」のが問題なわけじゃないですよね。
もしDLLがかなり大きいなら、起動時に出るフォーム(とそれが使用しているクラス)だけを別のDLLに抜き出すというのはどうでしょうか。
起動時に必要でない部分はメモリ上にロードされないようになります。
さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-06-05 10:05
>>一郎さんご意見有難うございます。

一郎さんの言われているようにどれくらい違うかの検証結果を提出した上で
方法を決定することとなっており、両方作らない解けません。

なんで、参照設定をしないほう方法探ってます。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-05 10:15
たぶん意味はないとは思うし、動的にアセンブリをロードするっていうことはリフレクションを使うのであとあと面倒になるかもしれません。

ということで、リフレクション関連を調べてください。
どぼんさん のプラグインの記事がわかりやすいかな。
http://codezine.jp/a/article/aid/1.aspx
_________________
かるあ のメモスニペット
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-06-05 10:28
DLLというのは今さっちんさんの所で作っているものじゃないんですか?
ソースがあるなら、exeのプロジェクトの中にDLLのソースも取り込んで一緒にコンパイルしてやれば一つのexeになりますよね。
「両方作らないと(い?)けません。」と言うのですからそうするしかないんじゃないですか。


-------
引用:

かるあさんの書き込み (2007-06-05 10:15) より:
たぶん意味はないとは思うし、動的にアセンブリをロードするっていうことはリフレクションを使うのであとあと面倒になるかもしれません。


「参照設定しない」という目的では動的にアセンブリをロードするのは良いですが、ロードの時間を問題にしているので、かるあさんの言うように動的にロードすることに「意味はない」ですよね。結局ロードするんですから。

[ メッセージ編集済み 編集者: 一郎 編集日時 2007-06-05 10:32 ]
さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-06-05 10:37
はい、DLLは私のほうで作ってます。
ただDLL化しようとしている数が大変多いので
一緒にっていうのは、大変だな・・・と思ってるしだいです。

参照設定しないことによって、最初の起動は早くなると考えています。
DLL化した機能を使用しない場合もあると思うので、動的ということを
考えているんです。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-06-05 10:47
引用:

さっちんさんの書き込み (2007-06-05 09:12) より:
そこで、exeからDLLで作った画面を呼び出すという処理を作ってます。
通常VB2005では、参照設定に追加をすればいいんですが、その方法の場合
起動時のレスポンスが悪くなるということで、それ以外の方法を調べているんでいるんですが
なかなか見つかりません。



DLLを参照設定をしているからレスポンスが悪くなるということはなかったと思います。
そのDLLに含まれるクラスを実際に使用するタイミングでそのDLLは初めてロードされるはず。
#書籍のMicrosoft .NET Frameworkにこの辺のことは詳しく載っていますが、
#今手元にないのでうろ覚えで書いてます。

ですので、ロードにかかる部分の処理を減らそうと思ったら、
そのDLLの中で常に使うクラス等だけを含んだものと
使用頻度の低いクラスを集めたDLLに分けるという方法が考えられます。
同様にEXEの中に使用頻度の低いクラス等があるなら、
DLLに切り出すということも必要かもしれません。

でも、実際のEXE/DLLで検証してみない限りは
どの程度レスポンスの改善が見込めるかはわかりませんので、
検証するしかないでしょう。
さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-06-05 11:02
よねKENさん有難うございます。
参照設定でもレスポンスが変わらないんであれば参照設定でOKかもしれません。

でもとりあえず、テストをしたいので方法を知りたいのです。
自分の知識があまりないので、サンプルを探している段階です。

スキルアップ/キャリアアップ(JOB@IT)