Шаг 111.
Динамически подключаемые библиотеки (общие сведения)
На этом шаге мы перечислим особенности использования DLL.
Динамически подключаемые библиотеки - Dynamically Linked Library (DLL) - предоставляют прикладным программам дополнительные можности на этапе выполнения.
Помимо использования стандарта DLL, разработанных фирмами-производителями программного обеспечения, Object Pascal позволяет программистам писать собственные DLL,
которые впоследствии можно использовать наряду со стандартными.
Ценность библиотек DLL состоит в том, что они после загрузки в оперативную память могут совместно использоваться несколькими прикладными программами. Кроме того, DLL поддерживают "многоязыковые" проекты:
в программах, написанных на языке Object Pascal, допускается использование DLL, созданных на других языках, а в программах, написанных на других языках, допускается использование DLL, созданных на Object Pascal.
Языковая конструкция "динамически подключаемая библиотека" одной стороны является продолжением и развитием конструкции "модуль", а с другой стороны имеет некоторые ограничения по сравнению ней.
Особенности DLL заключаются в следующих отличиях:
- компоновка модулей с главной программой выполняется статически во время компиляции, a DLL - динамически, во время исполнения программы.
Это позволяет для нескольких одновременно работающих
программ держать в оперативной памяти только по одной копии процедур и функций, используемых в каждой из них;
- код и ресурсы DLL, в отличие от модуля, не компонуются с использующей ее программой, а находятся в отдельном выполняемом файле расширением DLL, который должен быть доступным при выполнении программы.
Процедуры и функции DLL, вызываемые программой, связываются с ней динамически;
- ограниченность DLL по сравнению с модулями состоит в том, что модули могут экспортировать различные языковые единицы (типы, константы, переменные и так далее), a DLL только
процедуры и функции. Хотя DLL может содержать переменные, однако модули не смогут импортировать их для использования. Любой доступ к переменным DLL должен осуществляться через процедурный интерфейс;
при запуске созданного пользователем проекта на компиляцию, DLL, используемые в нем, автоматически не компилируются как модули. DLL требуется компилировать отдельно.
На следующем шаге мы рассмотрим процесс создания DLL.
Предыдущий шаг
Содержание
Следующий шаг