• ベストアンサー

DLLについて。

以下の画像について、ご教授いただけないでしょうか?すみません。

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

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1592/2319)
回答No.5

回答No.4への補足の質問について。 《「import32.lib」から呼び出すのは》から《参照しているだけです。》までの部分は何かからの引用でしょうか。引用であるならどの部分が引用であるのかが分かるように書いてください。 さらに、書かれている内容は意味が読み取れませんでした。元の質問にあった画像の本からの引用なのだろうと思いますが、前後の文章があれば分かるのかもしれませんし、あっても分からないかもしれません。 WindowsでDLLを使ったプログラムを作りたいという場合は、問題の本は今から学習するのには向いていないと思います。内容が古くて書かれている内容を試すのは困難だろうからです。

その他の回答 (4)

  • _kappe_
  • ベストアンサー率68% (1592/2319)
回答No.4

>スタティック・リンクと、ダイナミック・リンクの違いは、このURLはこの画像の 2つの意味と同じなのでしょうか? 日本語がとっちらかっていますね。落ち着いて投稿してください。 元の質問にある「Windowsにおけるコンパイルとリンクの仕組み」の図中のスタティックリンク、ダイナミックリンクは、回答No.3の補足に書かれたリンク先のスタティックリンク、ダイナミックリンクと同じ意味と思っていいです。

zasx1098
質問者

補足

迅速な回答ありがとうございます。所で、もう一つ質問なのですが、 「import32.lib」から呼び出すのは「MessageBox()」という機能の実体ではなく「利用する為」の呼び出しです。 「MessageBox()」という機能を利用する際「MessageBox()」というプログラムから「import32.lib」内にある情報を参照する必要があります。 つまり参照先のプログラムからさらに別のファイルの情報を参照しているだけです。とはどういう事でしょうか?ご教授いただけないでしょうか?すみません。

  • _kappe_
  • ベストアンサー率68% (1592/2319)
回答No.3

Borland¥bcc55ということは、20年くらい前の内容だと思います。そんな古い本を引っ張り出してきて、何を知りたいのでしょうか。 C言語で書かれたプログラム(図の中の例ではSample1.c)をWindowsで実行するためには、コンパイルおよびリンクという作業を通して実行可能ファイル(図の中の例ではSample1.exe)を作る必要があります。 まずはSample1.cをコンパイルしてSample1.objというオブジェクトファイルを作ります。Sample1.cの内容はきっと他のページに書かれているのだと思いますが、sprintf()とかMessageBox()という外部ルーチンをSample1.cから呼んでいるのでしょう。それらの外部ルーチンを呼ぶために必要な情報を追加してSample1.exeを生成する段階をリンクと言います。 この例ではsprintf()はスタティックリンクされて、MessageBox()はダイナミックリンクされています。これはBorland Cという昔のコンパイラとそのライブラリではそうなっていたというだけの話であって、その部分を掘り下げても時間の無駄だと思います。

zasx1098
質問者

補足

http://tooljp.com/windows/chigai/html/Language/staticlink-dynamiclink-chigai.htmlで、スタティック・リンクと、ダイナミック・リンクの違いは、このURL はこの画像の 2つの意味と同じなのでしょうか?ご教授いただけないでしょうか?すみません。

回答No.2

>この画像の写真は、そういう事を言っているという事でしょうか? ちがいます。No.1の回答は「DLLについて」のみの回答です(質問タイトルが「DLLについて。」だったので) 画像の写真は「Borland-Cにおいて、Cソースファイルから実行形式ファイルが作られ、実行されるまでの流れ」を説明しています。 その説明の中に「DLL」が出てきてて、No.1の回答は、DLLについてのみ述べています。

zasx1098
質問者

補足

「Borland-Cにおいて、Cソースファイルから実行形式ファイルが作られ、実行されるまでの流れ」 とはどういう事でしょうか?もう少し詳しい説明をいただけないでしょうか?ご教授いただけないでしょうか?すみません。

回答No.1

DLLについて。 DLL(ダイナミックリンクライブラリ)は、汎用性のあるルーチンを実行形式の形で集めた物。 メインの実行ファイルを起動すると、DLLのセットアップルーチンが呼び出され、未ロードのDLLをメモリにロードする。 他のアプリが同一DLLをロード済みの場合は、それがそのまま使われる。 なので、メインの実行ファイルのサイズを小さくする事が出来るが、DLLをインストール済みのパソコンでなければ、起動する事が出来ないので、事前にランタイムパッケージをインストールしておく(DLLをインストールしておく)必要がある。 DLLを使用しないタイプの実行ファイルも作成できるので、その場合は、ランタイムパッケージ無しで(DLL無しで)実行が可能になるが、すべてのライブラリがメインの実行ファイルに含まれるので、ファイルサイズが大きくなる。 過去、ネットワークが遅い時代、通信にお金が掛かった時代には、DLL化して実行ファイルのサイズを小さくするのが流行ったが、今は、高速回線もあり、通信料が低額化し、HDDも大容量化したので、DLL化は廃れている。

zasx1098
質問者

補足

この画像の写真は、そういう事を言っているという事でしょうか?ご教授いただけないでしょうか?すみません。

関連するQ&A

専門家に質問してみよう