April 7th, 2020

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

Перевод с английского статьи от 31.05.2018 г. «Dynamic-Link Libraries»:
https://docs.microsoft.com/ru-ru/windows/win32/dlls/dynamic-link-libraries
(На данный момент на этом сайте нет перевода этой статьи на русский, есть только версия на английском.)

Динамически подключаемая библиотека (dynamic-link library, DLL) [варианты перевода: «библиотека динамической компоновки», «динамическая библиотека»] — это модуль, который содержит функции и данные, которые могут быть использованы другим модулем (приложением или DLL).

В DLL могут быть определены два вида функций: экспортируемые и внутренние. Экспортируемые функции предназначены для вызова из других модулей, а также к ним можно обращаться и внутри DLL, в которой они определены. Несмотря на то, что DLL может экспортировать данные, ее данные в большинстве случаев используются только ее функциями. Однако, ничего не мешает другому модулю читать из адреса в памяти и писать в адрес в памяти, по которому расположены эти данные.

Библиотеки DLL обеспечивают способ разделения приложений на модули таким образом, что функциональность этих приложений становится легче обновлять и использовать повторно. Библиотеки DLL также помогают уменьшить лишний расход оперативной памяти в случае, когда несколько приложений используют одну и ту же функциональность одновременно: несмотря на то, что каждое приложение получает свою собственную копию данных библиотеки DLL, приложения совместно используют ее код.

Windows API (application programming interface, программный интерфейс приложения) [набор базовых функций интерфейсов программирования приложений операционных систем Windows] реализован как набор библиотек DLL, поэтому любой процесс, который использует Windows API, использует динамическое связывание модулей.