Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_3.doc
Скачиваний:
37
Добавлен:
28.03.2015
Размер:
1.71 Mб
Скачать
  1. Динамически загружаемые библиотеки

    1. Динамически загружаемые библиотеки

    2. Разработка библиотеки

      1. Структура библиотеки

      2. Экспорт подпрограмм

      3. Соглашения о вызове подпрограмм

      4. Пример библиотеки

    3. Использование библиотеки в программе

      1. Статический импорт

      2. Модуль импорта

      3. Динамический импорт

      4. Использование библиотеки из программы на языке C++

      5. Глобальные переменные и константы

      6. Инициализация и завершение работы библиотеки

      7. Исключительные ситуации и ошибки выполнения подпрограмм

      8. Общий менеджер памяти

      9. Стандартные системные переменные

      10. Итоги

5.1. Динамически загружаемые библиотеки

Рассмотрим теперь ситуацию, когда вы создаете не одну программу, а несколько, и в каждой из них пользуетесь общим набором подпрограмм, то код этих подпрограмм включается в каждую вашу программу. В результате достаточно большие общие части кода начинают дублироваться во всех ваших программах, неоправданно «раздувая» их размеры. Поддержка программ затрудняется, ведь если вы исправили ошибку в некоторой подпрограмме, то вам придется перекомпилировать и переслать потребителю целиком все программы, которые используют эту подпрограмму. Решение проблемы напрашивается само собой — перейти к модульной организации выполняемых файлов. В среде Delphi эта идея реализуется с помощью динамически загружаемых библиотек.

Динамически загружаемая библиотека (от англ. dynamically loadable library) — это библиотека подпрограмм, которая загружается в оперативную память и подключается к использующей программе во время ее работы (а не во время компиляции и сборки). Файлы динамически загружаемых библиотек в среде Windows обычно имеют расширение .dll (от англ. Dynamic-Link Library). Для краткости мы будем использовать термин динамическая библиотека, или даже просто библиотека, подразумевая DLL-библиотеку.

Когда мы говорим о динамически загружаемых библиотеках, мы имеем ввиду следующие особенности и назначение:

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

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

  3. Использование ресурсов системы. Библиотеки могут динамически загружаться и выгружаться из оперативной памяти по ходу работы программы, освобождая ресурсы системы для других задач.

  4. Взаимодействие подпрограмм, написанных на разных языках программирования. Например, вы можете свободно использовать в среде Delphi динамически загружаемые библиотеки, разработанные в других системах программирования с помощью языков C и C++. Справедливо и обратное утверждение — динамически загружаемые библиотеки, созданные в среде Delphi, можно подключать к программам на других языках программирования.