位置独立コード
32ビット版の Microsoft Windows のDLLは位置独立コードを使っていないので、Unix系の考え方では共有ライブラリではない。したがって、以前にロードしていたDLLを新たなDLLで上書きすることができず、グローバルなデータを共有するにはトリックを必要とする。コードは補助記憶装置から主記憶装置へ読み込んだ後でリロケート(再配置)する必要があり、プロセス間で共有できない可能性が生じる。DLLの共有は基本的にディスク上でのことである。
その制約を緩和するため、WindowsのシステムDLLのほとんどが事前に異なる固定アドレスにマッピングされ、重ならないようになっている。したがって、使用前に再配置する必要はなく、主記憶上でも共有可能である。ただし事前マッピングされたDLLであっても、必要に応じて任意のアドレスにロードできるよう再配置のための情報を含んでいる。
Windowsではこの共有技法を "memory mapping" と呼び、主記憶上にロードされたDLLのインスタンスを複数プロセス間で共有できることもある。しかし実際には、主記憶上でDLLを共有できないこともある。Windowsでは個々のコンパイルされたプログラムは、自身のアドレス空間内で個々のDLLがどの位置にマッピングされるかを知っていなければならず、位置独立性はサポートされていない。
DLLは作成時に「希望の」ベースアドレスを指定する。