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

Модульный кодинг – предок библиотек DLL



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


Проблема растраты места на диске на одинаковые модули была единственной, пока существовали только однозадачные ОС. С появлением многозадачных операционных систем таких, как например Windows, возникла еще одна проблема. Теперь программы имеющие модули с одинаковым кодом при одновременном запуске стали грузить его в оперативную память, «съедая» все ресурсы. Стоит отметить, что в тот период времени модуль памяти в 500 мегабайт был самым большим из существующих и стоил он довольно дорого. Но даже максимальный размер оперативной памяти не спасал пользователей, программы загружали оперативку полностью, делая нормальную работу компьютера невозможной.

Появление библиотек DLL



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

Единственный недостаток динамических библиотек - трата лишнего времени на загрузку программы. Кроме этого несущественного недостатка DLL состоит из одних только преимуществ. Поэтому данные библиотеки получили широкое применение и используются программистами практически в каждом приложении.