• ベストアンサー

Dllの作成について

以下はVC++を使いました。 Dllの関数を扱うプログラムをつくる際に、dllのヘッダとlibを使う場合と、dllのみ必要な時の二種類があります。 どちらも宣言部分のみを先にプログラムに読み込ませて実装部分をプログラム実行時にexeと結びつけるんですよね。 この時どちらもdllが必要なら、上の違いによるメリットやデメリットはなんでしょうか。

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

  • ベストアンサー
回答No.2

お疲れ様です。 dllヘッダとlibを使って静的リンクを行う場合、必ずdllが見つからなければ起動できません。 よって、必要不可欠なものを静的リンクします。 dllのみで動的にリンクを行う場合は、dllが無かった場合に無視する事ができます。 たとえば、lhut32というファイルの圧縮・解凍を行うフリーソフト等がありますが、これは各圧縮形式に対応したdllを動的にリンクする事によって機能が満たされています。 みつかったdllだけで、そのdllに対応する形式での圧縮・解凍が行えるようになっています。 以上

noroli
質問者

お礼

それぞれの違いが分かりました。 ありがとうございます。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

実行開始時に実際にDLLのメソッドを使うかどうかに 関わらずDLLをリンクします。このため、起動が遅いし、 DLLをリフレッシュする方法がありません。 後者は実際に使う時にDLLをロードする(そういうコードを 自作する)ので、起動が軽いし、リフレッシュも可能です。 リフレッシュとはDLLを解放してリンクし直すことです。 DLL内に制御データを持ち、障害によってデータが破壊されると、 その後正常動作しなくなるものがあります。(WinSock等) こういうDLLでは障害時にリフレッシュが必要です。 但し、前者は単に関数名をプログラムに記述すれば良いのに対し、 後者はDLLのロード、関数エントリの取得、DLLの解放などを 自分でコーディングしなければなりません。

noroli
質問者

お礼

ありがとうございます。 dllのヘッダとlibを使う場合のメリットが コーディングが楽という他にはありませんか?