logo
ОСиС-2014(Передача№1) / 1_ОперСистСети_ЛР_Методичка_2012 / ОС_ЛР-09-13-14 / LAB7 / LAB7

Библиотеки dll

DLL (Dynamic-Link Library, динамически связываемая библиотека) – это файл, содержащий набор готовых к исполнению процедур, а также, возможно, ресурсы. Функции DLL могут вызываться исполняемыми модулями (.EXE) или функциями других DLL, причем одновременно к функциям DLL может обращаться неограниченное количество других модулей.

Термин "динамическое связывание" означает, что функции библиотеки не включаются в код использующей ее программы, а вызываются из отдельно существующей библиотеки в процессе работы программы.

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

Подключение DLL может осуществляться как автоматически на этапе загрузки программы (load-time linking, статическая загрузка), так и "вручную" во время работы программы посредством ряда функций API (runtime linking, динамическая загрузка). Код библиотеки загружается в память один раз, сколько бы процессов ею ни пользовались, и выгружается, когда все использующие процессы завершаются. Принудительное аварийное завершение процесса, загрузившего DLL, часто приводит к тому, что код DLL не выгружается и бесполезно занимает память.

DLL могут быть написаны на разных языках с использованием различных моделей вызова. В документации к DLL обязательно должен быть отражен момент, связанный с моделью вызова функций (правилами передачи параметров). Наиболее часто используемые модели вызова, поддерживаемые большинством компиляторов – это модели, обозначаемые в Delphi как StdCall (модель вызова функций WinAPI), CDecl (модель языка С) и Pascal (модель языка Паскаль).