動的ライブラリと静的ライブラリの使い分け 質問する

動的ライブラリと静的ライブラリの使い分け 質問する

C++ でクラス ライブラリを作成する場合、動的ライブラリ ( .dll.so) と静的ライブラリ ( .lib.a) のどちらかを選択できます。これらの違いは何ですか。また、どちらを使用するのが適切なのでしょうか。

ベストアンサー1

静的ライブラリはバイナリ内のコードのサイズを大きくします。静的ライブラリは常にロードされ、コンパイルしたコードのバージョンが実行されるコードのバージョンになります。

動的ライブラリは別々に保存され、バージョン管理されます。更新が元のバージョンとバイナリ互換であると見なされる場合、コードに同梱されていた元のバージョンとは異なるバージョンの動的ライブラリがロードされる可能性があります。

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

動的ライブラリは、ほとんどの場合、より優れたアプローチであると考えられていましたが、当初は大きな欠陥 (Google DLL 地獄) があり、最近の Windows OS (特に Windows XP) では、この問題はほぼ解消されました。

おすすめ記事