ライブラリ
これは動的リンク時にライブラリのファイル名ではなく、ライブラリにつけられた署名によってリンクすべきライブラリを決定するものである。これにより、同じファイル名を持つが異なる実装を持つライブラリを同時に使い分ける事ができる。よくあるパターンとして、ソースコードから改変・ビルドされたランタイムライブラリをシステムにインストールする場合にこのメカニズムが有効に働く。システムにインストールされたライブラリはライブラリ探索リスト上比較的上位に存在するが、署名が一致するプログラムにのみロードされるのでDLL地獄は今後解消されるであろうと考えられる。しかし、この機構には一つの弱点がある。それはシステムライブラリをオーバーライドして独自機能を実装する時、この機構は役に立たない方向へ働く。その様な実装をする時には、故意にマニフェスト機能を無効にしてライブラリを作らなくてはならない。もっとも、そのようなアプローチは、システムファイル保護機能が搭載されたWindows 2000のリリース時点で時代遅れであり、Windows Vistaに至っては管理者と言えどもシステムライブラリを書き換える事は出来なくなっている。
動的ライブラリの起源は定かではないが、少なくとも1960年代後半のMTS (Michigan Terminal System) まで遡ることができる ("A History of MTS", Information Technology Digest, Vol. 5, No. 5)。
動的読み込み (英: dynamic loading) は動的リンクの下位カテゴリであり、ビルド時にリンク(暗黙的リンク、英: implicit linking)されたもの以外のダイナミックリンクライブラリを、実行中のプログラムが明示的にロードすることである。明示的リンク (英: explicit linking) と呼ばれることもある。この場合、ライブラリはプラグインモジュールとして使われるのが一般的で、表計算プログラムのadd-inや特定機能を実現するインタプリタなどが典型的である。
動的ライブラリをサポートしているシステムは、モジュールの動的読み込みAPIもサポートしているのが一般的である。例えばWindowsではLoadLibrary()とGetProcAddress()が用意されていて、Unix系システムではdlopen()とdlsym()が用意されている。いくつかの開発環境ではこの処理を自動化している。逆に、不要になったモジュールを解放(アンロード)するAPI(FreeLibrary()やdlclose())も用意されている。これらのAPIは、特にユーザーによる機能拡張を可能とするプラグインシステムをアプリケーション内に実装することにも役立つ。
.NET Frameworkでは、ライブラリのアセンブリは必要となったタイミングで動的かつ自動的にロードされる遅延読み込みが基本であるが、アセンブリの明示的なアンロードはできない。P/Invokeも同様である。.NET 4以降ではプラグインシステムの実装を容易にするManaged Extensibility Framework(英語版)がサポートされるようになった。