文章がわかりづらいので、各セクションをよく知りたいです。できるだけ説明してください。どうもありがとうございます。
3 に答える
プログラマーは、いくつかのプログラムで使用したいコードや、他のプログラマーが使用できるようにしたいコードがあることに気付くことがよくあります。ロジックをコピーしてすべてのプログラムに貼り付けることも、ロジックをすべてのプロジェクトに含まれる共通のヘッダーファイルと実装ファイルに配置することもできます。これらのアプローチはどちらも、ひどくエレガント(または効率的)ではありません。
静的ライブラリは、他のプログラムやプログラマーがそれを利用できるようにロジックを共有する1つの方法です。静的ライブラリは、リンカへの入力に適したバイナリファイル(多くの場合、.LIB拡張子が付いています)です。プログラマーは、静的ライブラリーに実装されている1つ以上の関数を呼び出すコードを記述し、リンカーがその静的ライブラリーファイルを追加の入力として読み取るように調整することにより、静的ライブラリーを使用します。ビルド中に、リンカは静的ライブラリ内に実装された関数への参照を含むすべての参照を解決します。多くの場合、静的ライブラリは、ライブラリに実装されている機能を説明するヘッダーファイルとペアになっています。
ダイナミックリンクライブラリは、ロジックを共有するもう1つの方法です。ダイナミックライブラリもバイナリファイルです(多くの場合、拡張子は.DLLです)。静的ライブラリとは異なり、DLLはリンカへの入力として使用されません。代わりに、DLLはプログラムの実行中に動的にロードされます。DLLは、 LoadLibraryExおよびGetProcAddressの呼び出しによって明示的にロードされるか、消費プログラムのロード時に暗黙的にロードされます。
静的ライブラリは、バイナリに含まれているライブラリです。リンカの実行時にプログラムに対してリンクされるため、静的であると言われます。DLLは動的にリンクするライブラリであるため、プログラムがコンパイルおよびリンクされるときではなく、プログラムがメモリにロードされるときにバイナリプログラムに対してリンクされる共有コードです。
名前はすべてを物語っています-静的ライブラリは静的であり(リンカーを使用してリンクされてコンパイルされ、プログラムの一部になります)、DLL(動的にリンクされたライブラリ)は実行時にファイル名で動的にリンクされ、メソッドを呼び出します。それは外部です。