Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум «Основы разработки приложений Windows» книга 2.DOC
Скачиваний:
91
Добавлен:
10.05.2014
Размер:
827.9 Кб
Скачать

8. Библиотеки динамической компоновки

Библиотеки динамической компоновки, или динамически подключаемые библиотеки, которые обычно сокращенно называют DLL-библиотеками или простоDLL(отDynamicLinkLibrary) можно смело назвать краеугольным камнем операционной системы Windows. Все функции обслуживания 32-разрядных приложений содержатся в таких библиотеках; прежде всего это файлыKERNEL32.EXE(управление памятью, потоками и процессами),USER32.DLL(поддержка интерфейса пользователя) иGDI32.EXE(графика и вывод текста).

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

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

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

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

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

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

Техника создания и использования прикладных DLL-библиотек описана в соответствующих лабораторных работах данного пособия.