При разработке программ часто оказывается, что разным программным приложениям требуются одни и те же объекты, их свойства методы, процедуры и функции. Например, почти все программы выводят информацию на экран и пользуются стандартными объектами интерфейса Windows (окна, кнопки, меню…) Было бы в высшей степени неразумно запихивать код отрисовки каждого такого элемента во все программы.
Таким образом, возникает задача разделения большой программы на отдельные независимые модули, каждый из которых содержит определенный набор процедур и функций. Процедуры и функции такого модуля может вызывать любая другая программа. Подобные модули получили название динамически подключаемых библиотек (DLL – dynamically linked library, Рис. 19.1). Слово "динамический" указывает на то, что подключение библиотеки происходит не на этапе компиляции, а уже после запуска программы.
Рис. 23.1 DLL – библиотеки.
DLL-библиотеки нашли самое широкое применение в большинстве программ. Скажем, сама операционная система Windows включает в свой состав несколько сотен DLL, и заключенная в них функциональность может использоваться нашими программами во избежание очередного изобретения велосипеда.
В каких случаях следует применять DLL? Во-первых, если вы разрабатываете несколько независимых программ и в них используются одни и те же фрагменты программного кода. Тогда такие фрагменты следует вынести в библиотеку. Это не только экономит место на диске, но и облегчает внесение изменений в проект – придется править только одну DLL, а не много exe-программ. Во-вторых, если вы хотите дать возможность пользователям вашей гениальной программы применять ее в своих разработках. В этом случае программу обычно разделяют на маленький exe-файл и большую DLL-библиотеку. Другие разработчики смогут использовать вашу DLL-библиотеку при условии, что вы предоставите описание содержащихся в ней процедур и функций и их параметров. Принято говорить, что процедуры и функции DLL-библиотеки экспортируются в другие программы.