2013-11-26 16 views
14

C言語では、スタティックライブラリとダイナミックライブラリの違いは何ですか? Windowsでスタティックライブラリとダイナミックライブラリの違い

+0

この [http://stackoverflow.com/questions/20229364/what-is-the-difference-between-a-static-library-and-a-dynamic-one][1] をお試しください [1]:私は、DLLを持ってhttp://stackoverflow.com/questions/20229364/what-is-the-difference-between-a-static-library-and-a-dynamic-one – Stef

答えて

32

この質問は少し説明が広すぎますが、私はあなたにあなたがさらに勉強できる基本的な考えを提供しようとします。

まず、ライブラリが何であるかを知る必要があります。基本的には、ライブラリは関数の集まりです。私たちのコードやその特定のファイルで定義されていない関数を使用していることに気づいたかもしれません。それらにアクセスするために、これらの関数の宣言を含むヘッダファイルをインクルードします。コンパイル後、リンクと呼ばれるプロセスがあり、それらの関数宣言を別のファイルにある定義とリンクします。この結果は、実際の実行可能ファイルです。

ここで説明したように、リンクは静的リンクです。つまり、すべての実行可能ファイルには、必要なすべてのライブラリ(関数のコレクション)が含まれています。これは、同じ機能が必要な多くのプログラムが存在するため、スペースの無駄です。この場合、メモリ内には同じ機能のより多くのコピーが存在します。動的リンクは、コンパイル時ではなく、実行時にリンクすることでこれを防ぎます。これは、すべての機能が特別なメモリ空間にあり、すべてのプログラムが複数のコピーを持たずにアクセスできることを意味します。これにより、必要なメモリ量が削減されます。

私は答えの冒頭で述べたとおり、これは基本的な理解を得るための非常に簡単な説明です。私は強くあなたがこのトピックについてもっと学ぶことを勧めます。

+0

簡潔でよく説明されています。ありがとうございました! – SRG

2

静的ライブラリは、実行可能ファイル内でリンクされますと、時間とともに変化しませんの.libファイルです。

ダイナミックライブラリは、実行可能ファイルにリンクされている.dllファイルであり、実行時に読み込むdllファイルによって異なる場合があります。

+0

わかりませんLinuxで。 – Daniel

関連する問題