• ベストアンサー

exeファイルしかないプログラムとそうでないプログラムの違い

プログラムにはexeファイル単体で動くものと、exeファイル以外にdllファイルなどさまざまな形式のデータと組み合わせて動くものがあります。後者のは、なぜexeファイル以外のデータが必要なのでしょうか?複数の機能を搭載していて、必要なときのみ呼び出すようにした方が効率的だからですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

>複数の機能を搭載していて、必要なときのみ呼び出すようにした方が効率的だからですか? それも一つの理由ですね。使用メモリが少なくて済みます。 他の大きな理由は、別々に開発したり、他人・他社が開発したソフトを利用したりするケースです。 わかりやすい極端な例としては、たとえば、10種類のソフトを開発しているAさんが、そのすべてのプログラムで、ZIP圧縮の機能を使っていたとします。 1個のEXEで動作する方式だと、圧縮のプログラムを改善した際、全プログラムのコンパイルとEXE再作成・配布が必要です。 圧縮だけをZIPLIB.DLLにまとめておけば、そのコンパイルとDLL配布だけで済みます。 また別のBさんが圧縮機能が必要なプログラムを作ろうとしたけど、圧縮アルゴリズムがよくわからないとします。この場合、AさんのZIPLIB.DLLを利用することで自分が圧縮プログラムを書かなくても機能だけ利用することが出来ます。

その他の回答 (1)

noname#150436
noname#150436
回答No.1

まあ簡単に言うと人が作った効果的で便利なプログラムがあるので それを拝借して効率良くプログラムを動かそうと言う事で作ったので それらの部品が必要になるわけですね DLLだけでなく色々なプログラムがありますが、いずれもそれがないと使えないと言う欠点もあります ただし、DLLなどはいわばお墨付きのプログラムのため相性が良く不具合が起こりにくいと言う部分もあります だからそれらを使わずにEXEなどに全部入れてしまうと 環境が変わって不具合が出たりしてしまうわけです DLLなら環境が変わってもバージョンアップもしてくれますので面倒が減ります おまけに作り手がそのDLLへの対応も比較的簡単に出来るようにしてるのでDLLがバージョンアップしても容易に対応する事が出来るわけです まあ作り手側からすればデメリットよりもメリットの方が多いというわけですね ただし、使い手はデメリットしか見えないのでやや使いにくいかもしれないですね

関連するQ&A

  • exeファイルはどのdllを参照すべきか、知っているのでしょうか。

    dllとは、プログラムが実行時に参照するものですよね。 よく使われる機能があらかじめ作られているものですよね。 私はC言語しか知らないので、C言語でプログラミングすることで話を進めさせてください。 (とは言っても、ごく初歩的なプログラムが組めるだけの素人です。) OSはWindowsということにします。 C言語は、関数の集まりでソースが書かれています。 dllも、中身に関数の実体が記述されている、そういうイメージでしょうか。 私がもっと勉強して、複雑なプログラムを組んだりすると、 「あ、これはdllに実体がある機能だから、いちいち実装を書かなくてもいいんだな」 と考えて、ソースファイル( ~.c )の中でその関数を使うだろうと思います。 私がよくわからないのはここからです。 dllにある関数をソースで使って、無事コンパイルして、さあリンクしてexeを作りましょう、 というときに、リンカ(リンクを行うプログラム)は、 「そんな関数、実体がないぞ」 って文句を言ってこないのでしょうか。 いや、リンカは、dllに実体がある関数だということを知っているはず。 でもそれって、いちいち 「この関数はどこどこにある ○○.dll というdllに書いてあります」 というふうに、リンカに教えてあげなくてはいけないのでしょうか。 (それってまさか、ソースに書くわけじゃないですよね? ) それから、 exeファイルっていうのは「この機能はdllに行わせる機能だ」ということを知っているのでしょうか。 dllに行わせる機能だということを知っているとしても、 どのディレクトリにある なんと言う名のdllに その機能が書かれていることまで知っているのでしょうか。 (でもそこまで知っていたら逆に、ディレクトリ構成の違うマシンでは実行できなくなってしまうし。) そういうような原理的なことを教えてください。

  • HSP実行ファイルで・・・・

    ようやくHSPのプログラムが完成しました! 実行ファイルを作ったのですが、hspext.asを使っている為にhspext.dllが同じディレクトリにあれば実行出来るもののexe単体をディスクトップに持ってくると 予想通りhspext.dllが見つかりません!となります。 単体のexeファイル一つだけですと見栄えが良くていいな~と思っているのですが、そういうことって出来ますでしょうか? 前に他の方がHSPで作ったのダウンしたことあるんですが拡張プラグイン使いまくっているはずなのに単体のexeファイル一つでしたので出来るんだろうな~?とは思うのですが(そのファイルはインストール無しでした)

  • exeファイルにドラッグすることで動作するプログラム

    現在、exeファイルのアイコンにデータファイルをドラッグすることで、プログラムを動かし、データファイルを読み込んで処理するプログラムをVisualC++2008ExpressEdtionで作成しています。 ここで質問が2つあります。 <質問1>  データファイル名に日本語(2バイトコード)が含まれている場合、CreateFile関数でエラーとなります。ファイル名に日本語を含む場合どのようにすればよいか教えてください。 <質問2>  現在作成しているプログラムでは、処理結果をファイルに出力しています。出力ファイルのフォルダをexeファイルのある場所にしたいのですが、プログラムコード上で相対パスで指定すると、上手く動きません(別フォルダに出力ファイルが作成されます)。ドラッグによってexeファイルを起動する場合、exeファイルのあるフォルダを知るにはどうしたらよいのでしょうか?

  • PHPでexeファイル実行

    C言語でMPG形式の画像ファイルを読み込み、画像処理をしてテキスト形式で画像データを出力するプログラムを作成したのですが、 これをPHPプログラム内で動作させ、テキストデータ(できればバイナリのほうがいい)を読み取りたいと思います。 これはexeファイルをexecやsystem関数で実行することで解決できるのでしょうか? また、C言語の画像処理プログラムが画像を読み込んでからテキストデータを作成するまで1分ほどのタイムラグがあります。 どうすればPHP内の処理でexeファイル実行→exeがデータベースから画像を読み込む→ 1分処理待ち→テキスト作成→作成されたテキストデータをPHPで読み込み とできるのでしょうか? ちなみに、exeファイルとphpで作成した画像データベースはサーバー機に置くつもりです。 テキストデータを介さなくても、C言語プログラムからphpに直接データを渡す方法があればそちらのほうが望ましいです。 連続投稿で申し訳ないのですが、急を要するのでぜひともご解答お願いします。

    • ベストアンサー
    • PHP
  • EXEファイルからの抽出

    EXEファイルからEXEファイルを抽出すくことって出来ますでしょうか? 自己解凍形式ではなく一応プログラム内に入っているexeファイルです。 フリーウェアでもシェアウェアでもかまいません。 解答お待ちしております。

  • 消失したプログラムファイルについて

    Norton SystemWorksのプログラム整合性スキャンで C:\WINDOWS\NtUninstallkB898458$ORUN32EXEが必要なファイルにアクセスできません "learn32dll. C:\WINDOWS\NtUninstallkB898458$ORUN32EXEが必要なファイルにアクセスできません "pctree32dll. C:\WINDOWS\System32\MAPISRVREXEが必要なファイルにアクセスできません "gapi32dll. と出てきます。 修復を試みると回復しましたとなるのですがスキャンをかけるたびにこの3個が問題としてあがってきます。 今後考えられる不具合などを教えてください。 あわせて必要であれば回復の方法もよろしくお願いします。NEC LL500/6 XP(HOME SP2)です。よろしくお願いします。

  • プログラム開始エラー MSCOREE.DLLファイルが見つかりません

    あるソフト(exeファイル)をインストールしようとすると「プログラム開始エラー必要なDLLファイルMSCOREE.DLLが見つかりません」という表示が出ます。windows98でやっていますが検索してもさっぱりわかりません。よろしかったらアドバイス頂けないでしょうか?急いでいます。お願いします。

  • メニューEXEよりdllを呼び出す方法

    Vb.Netで、メニューEXEより、プログラムdllを呼び出す場合なのですが、VB6.0ですと、CreateObjectを使用して呼び出すことが可能だと思いますが、.NETにて同じ事を行おうと考えた場合、どのように作ればよいのでしょうか? 私が調べた感じでは、メニューEXEの参照設定にプログラムdllを追加させる方法です。 上記方法ですと、プログラムdllが増えるたびにEXEに項目を追加しないとまずく、非効率だと思うのですが…

  • exeファイルが開けない

    間違ってなにかを削除してしまいexeファイルが開けなくなってしまいました。 システムを復元しようとしたのですがexeファイルが開けないためできませんでした。 あと、どのプログラムも開けなくなってしまいました 解決方法を知っている方がいましたら教えて下さい。おねがいします

  • 消失したプログラムファイル?

    何もしないのに「消失したプログラムファイル」 c:\WINDOES\system32\MAPISRVR.EXEが必要なファイルにアクセス出来ません”gapi32dll と出てきます。 Norton System Worksのシステムの状態の検査で出てきます。 現在はPCの使用に不都合はありませんが、これをなおす方法を教えて下さい。 宜しくご指導お願いいたします。

専門家に質問してみよう