2012-04-17 7 views

答えて

2

OSにDLLのロードを指示する方法はいくつかあります。最も一般的な方法は、(プロジェクトのリンカ設定を使用して).libファイルにリンクすることです。ここで、.libはDLLに関連付けられたビルド時のスタブです。リンカーがリンク段階でこの.libファイルを見つけたら、DLLが必要であることを認識し、内部でEXEを変更して、プログラムを実行するためにDLLが存在する必要があることをオペレーティングシステムに通知します。

プログラムが後で実行されるとき、オペレーティングシステムは最初に、プログラムのコードの実行を開始する前に、必要なすべてのDLLを探します。これらのDLLのいずれかが見つからない場合、オペレーティングシステムはエラーをスローし、エラーボックスがポップアップし、プログラムは実行されません。

DLLを動的にロードすることもできますが、これはすべて一般的なことではありません。

+1

DLLを動的にロードするのは、実際にはかなり一般的です。 1)プラグインシステム、2)旧バージョンとの下位互換性を維持しながら、新しいバージョンのWindowsでのみ使用できる追加機能をサポートする2つの一般的な使用例があります(例えば、定義されたDWM API 'dwmapi.dll'にあります)。 –

+0

十分に公正な - 私は自分自身のDLLの動的な読み込みの多くをやった。私の印象以外に、静的に、動的に、または読み込まれたDLLのうち、何パーセントのDLLが読み込まれているかわかりません。 –

+0

私の質問は本当に静的な読み込みについてです。どのDLLが.libで制御されているのですか?ソースコードや設定を通して? – Shengyan

関連する問題