- - PR -
exeからDLLの呼び出し
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-05 09:12
VB2005にて開発をしております。
そこで、exeからDLLで作った画面を呼び出すという処理を作ってます。 通常VB2005では、参照設定に追加をすればいいんですが、その方法の場合 起動時のレスポンスが悪くなるということで、それ以外の方法を調べているんでいるんですが なかなか見つかりません。 どこかにいいサンプルありませんでしょうか? ちなみに、exeもDLLもVB2005です [ メッセージ編集済み 編集者: さっちん 編集日時 2007-06-05 10:00 ] | ||||
|
投稿日時: 2007-06-05 10:02
アセンブリをロードするときに検証などをするんでしょうから、確かに少しの時間はかかるでしょうが、そんなに違うものですか?
exeからDLLを参照する場合と、exeとDLLの機能を全て一つのアセンブリに入れた場合でどれくらい違います? それで同じ速さなら「exeからDLLで作った画面を呼び出す」のが問題なわけじゃないですよね。 もしDLLがかなり大きいなら、起動時に出るフォーム(とそれが使用しているクラス)だけを別のDLLに抜き出すというのはどうでしょうか。 起動時に必要でない部分はメモリ上にロードされないようになります。 | ||||
|
投稿日時: 2007-06-05 10:05
>>一郎さんご意見有難うございます。
一郎さんの言われているようにどれくらい違うかの検証結果を提出した上で 方法を決定することとなっており、両方作らない解けません。 なんで、参照設定をしないほう方法探ってます。 | ||||
|
投稿日時: 2007-06-05 10:15
たぶん意味はないとは思うし、動的にアセンブリをロードするっていうことはリフレクションを使うのであとあと面倒になるかもしれません。
ということで、リフレクション関連を調べてください。 どぼんさん のプラグインの記事がわかりやすいかな。 http://codezine.jp/a/article/aid/1.aspx _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-06-05 10:28
DLLというのは今さっちんさんの所で作っているものじゃないんですか?
ソースがあるなら、exeのプロジェクトの中にDLLのソースも取り込んで一緒にコンパイルしてやれば一つのexeになりますよね。 「両方作らないと(い?)けません。」と言うのですからそうするしかないんじゃないですか。 -------
「参照設定しない」という目的では動的にアセンブリをロードするのは良いですが、ロードの時間を問題にしているので、かるあさんの言うように動的にロードすることに「意味はない」ですよね。結局ロードするんですから。 [ メッセージ編集済み 編集者: 一郎 編集日時 2007-06-05 10:32 ] | ||||
|
投稿日時: 2007-06-05 10:37
はい、DLLは私のほうで作ってます。
ただDLL化しようとしている数が大変多いので 一緒にっていうのは、大変だな・・・と思ってるしだいです。 参照設定しないことによって、最初の起動は早くなると考えています。 DLL化した機能を使用しない場合もあると思うので、動的ということを 考えているんです。 | ||||
|
投稿日時: 2007-06-05 10:47
DLLを参照設定をしているからレスポンスが悪くなるということはなかったと思います。 そのDLLに含まれるクラスを実際に使用するタイミングでそのDLLは初めてロードされるはず。 #書籍のMicrosoft .NET Frameworkにこの辺のことは詳しく載っていますが、 #今手元にないのでうろ覚えで書いてます。 ですので、ロードにかかる部分の処理を減らそうと思ったら、 そのDLLの中で常に使うクラス等だけを含んだものと 使用頻度の低いクラスを集めたDLLに分けるという方法が考えられます。 同様にEXEの中に使用頻度の低いクラス等があるなら、 DLLに切り出すということも必要かもしれません。 でも、実際のEXE/DLLで検証してみない限りは どの程度レスポンスの改善が見込めるかはわかりませんので、 検証するしかないでしょう。 | ||||
|
投稿日時: 2007-06-05 11:02
よねKENさん有難うございます。
参照設定でもレスポンスが変わらないんであれば参照設定でOKかもしれません。 でもとりあえず、テストをしたいので方法を知りたいのです。 自分の知識があまりないので、サンプルを探している段階です。 |