C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: DLLとEXEの違い


(過去ログ 51 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■27818 / inTopicNo.1)  DLLとEXEの違い
  
□投稿者/ nori (24回)-(2008/11/15(Sat) 10:48:05)

分類:[.NET 全般] 

http://bbs.wankuma.com/index.cgi?mode=al2&namber=27601

VS2005から(開発環境で)exeを参照出来るようになったのは知っていたのですが
exeとdllの違いが分かりません

exeとして作成可能な場合、dllにしようがexeとしようが、どちらで作っても変わりはないのでしょうか?
引用返信 編集キー/
■27819 / inTopicNo.2)  Re[1]: DLLとEXEの違い
□投稿者/ .SHO (42回)-(2008/11/15(Sat) 10:59:48)
dllはそれだけじゃ、実行できないですよね。
引用返信 編集キー/
■27820 / inTopicNo.3)  Re[1]: DLLとEXEの違い
□投稿者/ Jitta on the way (223回)-(2008/11/15(Sat) 10:59:58)
No27818 (nori さん) に返信
> exeとdllの違いが分かりません
>
> exeとして作成可能な場合、dllにしようがexeとしようが、どちらで作っても変わりはないのでしょうか?

see エントリ ポイント
引用返信 編集キー/
■27826 / inTopicNo.4)  Re[2]: DLLとEXEの違い
□投稿者/ nori (26回)-(2008/11/15(Sat) 11:51:26)
.SHOさん
Jitta on the wayさん

ご回答ありがとうございます

>dllはそれだけじゃ、実行できないですよね。
例えばマスター検索Formのような共通Formを作成する場合、dllでもexeでも作成できますよね。
そういった場合、どちらで作成しても変わりは無いのでしょか?
変わり無ければ、exeで作った方が単独でも起動できるのでメリットがあるように思います。
(単独で起動する必要があるかどうかは別にして)

>see エントリ ポイント
もう少しヒントを頂けると助かります。

よろしくお願いします。
引用返信 編集キー/
■27827 / inTopicNo.5)  Re[3]: DLLとEXEの違い
□投稿者/ .SHO (44回)-(2008/11/15(Sat) 12:12:09)
No27826 (nori さん) に返信

> (単独で起動する必要があるかどうかは別にして)

単独で起動する必要がないならDLLでいいような気がします。
引用返信 編集キー/
■27829 / inTopicNo.6)  Re[3]: DLLとEXEの違い
□投稿者/ よねKEN (20回)-(2008/11/15(Sat) 14:15:25)
2008/11/15(Sat) 14:16:41 編集(投稿者)

> >dllはそれだけじゃ、実行できないですよね。
> 例えばマスター検索Formのような共通Formを作成する場合、dllでもexeでも作成できますよね。
> そういった場合、どちらで作成しても変わりは無いのでしょか?

動作上は変わりありません。

> 変わり無ければ、exeで作った方が単独でも起動できるのでメリットがあるように思います。
> (単独で起動する必要があるかどうかは別にして)

逆にいえば、単独で起動する必要がない/単独で起動されては困るものをDLLにします。
一般的にはクラスライブラリをDLLにします。クラスライブラリは通常、
単独で実行する必要もなければ、単独で実行するメリットもないからです。

EXEで作った方がメリットがあるかどうかですが、
単独で起動できる必要があるか/意味があるかによるでしょう。

単独で起動する必要のないものを無闇にEXEにすることはお勧めしません。
例えば、ログイン画面Aと次に表示する画面Bがあって、A.EXEとB.EXEにした場合に、
B.EXEは単独で実行できちゃいますが、ログイン画面通らずに実行されるのはまずいですよね。
#厳密には、B.DLLにしておけば安全というわけではなく、
#Bを単独では使えないようにしておく必要があるわけですが。
#(例えばA.EXEで得られるログイン情報がなければ、B.DLLのメソッドを呼べないようにしておくとか)

> >see エントリ ポイント
> もう少しヒントを頂けると助かります。

EXEにはエントリポイントがありますが、DLLにはエントリポイントがありません。
エントリポイントとは、起動時に最初に実行されるメソッドです。

引用返信 編集キー/
■27830 / inTopicNo.7)  Re[4]: DLLとEXEの違い
□投稿者/ .SHO (45回)-(2008/11/15(Sat) 14:28:58)
No27829 (よねKEN さん) に返信

> B.EXEは単独で実行できちゃいますが、ログイン画面通らずに実行されるのはまずいですよね。

単独で実行されたら
MessageBox.Show( "単独で実行しても無駄だよ〜ん!" );
として終わっちゃうようにしておくといいですね。
どーしても EXE にしたいならですが。。
引用返信 編集キー/
■27834 / inTopicNo.8)  Re[4]: DLLとEXEの違い
□投稿者/ くだん (8回)-(2008/11/15(Sat) 17:12:31)
No27829 (よねKEN さん) に返信
> DLLにはエントリポイントがありません。
エントリポイントについて調べてみたところ下記の記述がありました。


>プラグインやライブラリは複数のエントリーポイントが存在し、それを呼び出すことで外部からサブルーチンが実行できる。
出典: フリー百科事典『ウィキペディア(Wikipedia)』

http://msdn.microsoft.com/ja-jp/library/f5xe74x8(VS.80).aspx
>エントリ ポイントの指定
>エントリ ポイントは、DLL 内の関数の位置を識別します。


違うことを言っているのでしょうか?

引用返信 編集キー/
■27847 / inTopicNo.9)  Re[5]: DLLとEXEの違い
□投稿者/ 774RR (240回)-(2008/11/16(Sun) 08:24:36)
違うといってもいいし同じといってもいいし、要するに用語の使い方が違うだけ

エントリーポイント=入口、っつーことだ。問題は何の入口か、ということで
・プログラム全体の入口(ファイルを実行した際の開始位置)という意味で使った
No27820 No27829
・関数の入口という意味で使った
http://msdn.microsoft.com/ja-jp/library/f5xe74x8.aspx

単独で実行できる必然があるかどうかで作り分けるといい、っつう答えはすでに出てる。
単独実行させるとエラー表示するようなコードをわざわざ設けてファイルを大きくするのは
無駄なような気がする。

引用返信 編集キー/
■27849 / inTopicNo.10)  Re[6]: DLLとEXEの違い
□投稿者/ nori (27回)-(2008/11/16(Sun) 12:29:56)
皆様
レスありがとうございます

デメリットは運用上の問題はあるが、
システム的(例えばexeで作った方がloadに時間がかかる等)と言ったデメリットは無いという事ですね。

良く分かりました
ありがとうございます


解決済み
引用返信 編集キー/
■27872 / inTopicNo.11)  Re[7]: DLLとEXEの違い
□投稿者/ 中博俊 (1316回)-(2008/11/17(Mon) 09:42:16)
中博俊 さんの Web サイト
ちがうぞ、ちがうぞ、ちがうぞ。
EXEにはエントリポイントが入っているというのは確かにそうだけど、それだけじゃない。
そのプロセスが起動するのに必要なモノも入ってる。

たとえば発行ができないとか
http://blogs.wankuma.com/naka/archive/2005/12/04/19808.aspx

起動しないとか
http://blogs.wankuma.com/naka/archive/2007/05/27/78509.aspx

こういう問題があります。
なので絶対にやってはいけません。

引用返信 編集キー/
■27874 / inTopicNo.12)  Re[8]: DLLとEXEの違い
□投稿者/ まんごーぷりん (3回)-(2008/11/17(Mon) 09:53:10)
まんごーぷりん さんの Web サイト
これは、まず「dll とは」「exe とは」で検索してみるのが一番わかりやすいんじゃないかな?
dll って何の略?
exe って何の略?

その名の通りなんだな、ってわかると思う。
引用返信 編集キー/
■27875 / inTopicNo.13)  Re[6]: DLLとEXEの違い
□投稿者/ .SHO (49回)-(2008/11/17(Mon) 09:59:16)
No27847 (774RR さん) に返信

> 単独実行させるとエラー表示するようなコードをわざわざ設けてファイルを大きくするのは
> 無駄なような気がする。

まぁ確かに無駄ですね。

ただ、この程度の処理ならまずファイルが大きくなることはないでしょう。
たまたまCOFFファイルの4096バイトセグメント境界をまたいでしまうと
4096バイト増えるかも知れないですが…

と言いながら、Windowsで動作させる全ての .EXE の最初についてる
「This program cannot be run in DOS mode.」って表示させる
処理は、今時はもう無駄だなぁと思ってしまう^^;
引用返信 編集キー/
■27879 / inTopicNo.14)  Re[7]: DLLとEXEの違い
□投稿者/ .SHO (51回)-(2008/11/17(Mon) 10:22:56)
あっ!でも、ソースファイルは確実に大きくなりますね。

もっともそれも、FATセグメントをまたがなければ
ハードディスク上のサイズは変わりませんが。。。
引用返信 編集キー/
■27888 / inTopicNo.15)  Re[8]: DLLとEXEの違い
□投稿者/ Jitta (539回)-(2008/11/17(Mon) 11:56:55)
No27872 (中博俊 さん) に返信
> ちがうぞ、ちがうぞ、ちがうぞ。
> EXEにはエントリポイントが入っているというのは確かにそうだけど、それだけじゃない。
> そのプロセスが起動するのに必要なモノも入ってる。
>
> たとえば発行ができないとか
> http://blogs.wankuma.com/naka/archive/2005/12/04/19808.aspx
>
> 起動しないとか
> http://blogs.wankuma.com/naka/archive/2007/05/27/78509.aspx
>
> こういう問題があります。
> なので絶対にやってはいけません。
>



> もう少しヒントを頂けると助かります。

EXEcutable ファイルのエントリ ポイントについて調べたら、起動シーケンスにまで行き着くかなぁ?と思ったのですけど、調べもされなかったみたいですね。(∋_∈)ショボーン

Dynamic Link Library も、RunDLL.exe から関数を指定して、関数を実行させることはできます。また、DllEntry という、ロードしたら走る関数があってこれをエントリ ポイントというけど、んなことは調べればわかるわけで。

「もうちょっと詳しく」って言うなら、自分が調べて何がわからないのかかいて、ピン ポイントで聞いて欲しいなぁ。

人に聞くのも調べることの一つのメソッドですが、自分の手や頭は動かさないの?と問いたい。



> 「This program cannot be run in DOS mode.」って表示させる
> 処理は、今時はもう無駄だなぁと思ってしまう^^;
MSDN で、DOS はまだ提供されています。したがって、無駄とは言い切れないと思います。
引用返信 編集キー/
■27893 / inTopicNo.16)  Re[9]: DLLとEXEの違い
□投稿者/ .SHO (55回)-(2008/11/17(Mon) 12:30:30)
No27888 (Jitta さん) に返信

>>「This program cannot be run in DOS mode.」って表示させる
>>処理は、今時はもう無駄だなぁと思ってしまう^^;
> MSDN で、DOS はまだ提供されています。したがって、無駄とは言い切れないと思います。

可能性だけで言うなら無駄じゃないですね。
ただ、DOSでWindowsプログラムを起動するという使用ミスがどの程度発生するのか?
と考えると、たとえば古い家電を修理に出したら「部品が既に製造中止になているので
修理できません。」と言われるのと同じ扱いでもいいのでは?と思ったりもします。


って書きながら、それじゃぁ、MSはDOSのサポートを終われと言ってるのと変わらないなぁ
と思ったりもしてしまった…やっぱ必要ですね(笑)
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -