DLL ( англ. dynamic-link library - "Бібліотека динамічного компонування", "Колективна бібліотека") - поняття операційних систем Microsoft Windows і IBM OS / 2, динамічна бібліотека, яка дозволяє багаторазове використання різними програмними додатками. K DLL відносяться також елементи управління ActiveX і драйвери. У світі UNIX аналогічні функції виконують так звані загальні об'єкти ( англ. shared objects ).

Формат файлів DLL дотримується тих же угод, що і формат виконуваних файлів, поєднуючи код, таблиці та ресурси, відрізняючись лише інтерпретацією деяких полів.


Цілі введення

Спочатку передбачалося, що введення DLL дозволить ефективно організувати пам'ять та дисковий простір, використовуючи тільки один екземпляр бібліотечного модуля для різних додатків. Це було особливо важливо для ранніх версій Microsoft Windows з жорсткими обмеженнями по пам'яті.

Далі, передбачалося поліпшити ефективність розробок і використання системних засобів за рахунок модульності. Заміна DLL-програм з однієї версії на іншу повинна була дозволити незалежно нарощувати систему, не зачіпаючи додатків. Крім того, динамічні бібліотеки могли використовуватися різнотипними додатками - наприклад, Microsoft Office, Microsoft Visual Studio і т. п.

Надалі ідея модульності виросла в концепції Component Object Model і System Object Model.

Фактично, повних переваг від впровадження динамічно підключаються бібліотек отримати не вдалося через явища, званого DLL hell ("пекло DLL"). DLL hell виникає, коли кілька додатків вимагають одночасно різні, не повністю сумісні, версії бібліотек, що призводить до збоїв в цих додатках і до конфліктів типу DLL hell, різко знижуючи загальну надійність операційних систем. Пізні версії Microsoft Windows стали дозволяти паралельне використання різних версій DLL (технологія SxS), що звело нанівець переваги споконвічного принципу модульності.