1. ホーム
  2. c++

[解決済み] ダイナミックライブラリとスタティックライブラリの使い分け

2022-03-21 19:10:20

質問

C++でクラスライブラリを作成する場合、動的( .dll , .so ) と静的 ( .lib , .a ) ライブラリです。この2つの違いは何ですか?

どのように解決するのですか?

スタティック・ライブラリは、バイナリ内のコードのサイズを増加させます。スタティック・ライブラリは常にロードされ、コンパイルしたコードのバージョンがそのまま実行されるバージョンとなります。

ダイナミックライブラリは、別々に保存され、バージョン管理されています。ダイナミック・ライブラリーのバージョンは、あなたのコードに同梱されたオリジナルのものではないものがロードされる可能性があります。 もし の場合、アップデートは元のバージョンとバイナリ互換性があるとみなされます。

また、ダイナミックライブラリは必ずしもロードされる必要はなく、通常は最初に呼び出されたときにロードされ、同じライブラリを使用するコンポーネント間で共有できます(複数のデータロード、1つのコードロード)。

ダイナミック・ライブラリは、ほとんどの場合、より良いアプローチと考えられていましたが、元々大きな欠点がありました(DLL地獄でググってみてください)。