Динамически подключаемая библиотека

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

DLL (англ. Dynamic Link Library — «библиотека динамической компоновки», «динамически подключаемая библиотека») в операционных системах Microsoft Windows и IBM OS/2 — динамическая библиотека, позволяющая многократное использование различными программными приложениями. Эти библиотеки обычно имеют расширение DLL, OCX(для библиотек содержащих ActiveX), или DRV(для ряда системных драйверов). Формат файлов для DLL такой же, как для EXE файлов Windows, т.е. Portable Executable (PE) для 32-х битных и 64-х битных Windows приложений, и New Executable (NE) для 16-ти битных Windows приложений. Так же, как EXE, DLL могут содержать секции кода, данных и ресурсов. В системах UNIX аналогичные функции выполняют так называемые общие объекты (англ. shared objects).

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

Назначение[править | править вики-текст]

Первоначально предполагалось, что введение 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 (технология Side-by-side assembly), что свело на нет преимущества изначального принципа модульности.

Существует так же ряд утилит, которые позволяют отследить зависимости приложений от подключаемых DLL. К примеру see_dll из комплекта Microsoft Visual Studio.

Ссылки[править | править вики-текст]