Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Развёрнутые лекции по Паскалю.doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
512.51 Кб
Скачать

26.Динамические библиотеки

Динамические библиотеки представляют собой исполняемые модули,

предназначенные для использования прикладными программами или дру-

гими библиотеками в среде Windows или защищенном режиме Dos.

Код, содержащийся в такой библиотеке, не компонуется в испол-

няемую программу, а вызывается для исполнения из соответствующей

библиотеки. Могут экспортироваться только процедуры и функции.

а)Использование динамических библиотек

Для использования подпрограмм из динамических библиотек следу-

ет использовать директиву External, которая должна располагаться на

месте обычной секции определения процедур и функций и должна иметь

дальнюю модель вызова.

Существует три способа выборки процедур и функций из библиотек:

->По имени.

->По новому имени (директива Name).

->По индексу (директива Index). Обеспечивает быструю выборку.

Если нет указания на индекс или новое имя, то выборка произво-

дится по имени.

Пример 87.

Procedure ImportByName; External 'TesLib';

Procedure ImportByNewName; External 'TestLib' Name 'RealName';

Procedure ImportByOrdinal; External 'TestLib' Index 5;

Допускается объявление импортируемых подпрограмм непосредст-

венно в головной программе, но лучше создавать модуль импорта, как

WinTypes, WinProcs, WinApi. В случае модификаций потребуется изме-

нить лишь один модуль.

б)Создание динамических библиотек

Структура текста библиотеки аналогична обычному модулю, исклю-

чая несколько различий:

->Заголовок библиотеки должен начинаться со слова Library.

->Заголовок каждой экспортируемой подпрограммы должен включать

директиву Export.

->Библиотека должна включать раздел Exports, в котором перечи-

сляются все экспортируемые подпрограммы с указанием их инде-

кса с помощью директивы Index.

Пример 88.

Library MinMax;

Function Min(X,Y:Integer):Integer; Export;

Begin

If X<Y Then Min:=X Else Min:=Y;

End;

Function Max(X,Y:Integer):Integer; Export;

Begin

If X>Y Then Max:=X Else Max:=Y;

End;

. . .

Exports

Min Index 1;

Max Index 2;

. . .

Begin

[<код инициализации>];

End.

Код инициализации, если он представлен, выполняется один раз

при каждой загрузке библиотеки. Он необходим бывает в среде Windows.

Библиотеки Dll имеют собственный сегмент данных для размещения

собственных глобальных переменных, но не имеют собственного сегмен-

та стека.

Библиотеки Dll могут быть общими для Windows и защищенного ре-

жима Dos.

27.ПРОГРАММИРОВАНИЕ В ЗАЩИЩЕННОМ РЕЖИМЕ DOS

Начиная с процессора 80286 стало возможным реализовать два ре-

жима реализации программ: реальный, когда программы используют па-

мять до 1 Мбайта, и защищенный, когда для работы программы исполь-

зуется память до 16 Мбайт. Отличие заключается в способах преобра-

зования логических адресов в физические. В реальном режиме исполь-

зуются 20-и разрядные адреса, а в защищенном 24-х разрядные. Допол-

нительные четыре разряда (2^4=16) фактически позволяют организовать

таблицу дискрипторов для задания адресов сегментов до 16 Мбайт.

Для работы в защищенном режиме предусмотрен интерфейс защищен-

ного режима (DPMI), который описывает на аппаратно-программном уро-

вне работу с дискрипторной таблицей, реализует прерывания, управле-

ние памятью. Непосредственное обращение к серверу DPMI возможно че-

рез 31 прерывание. Для загрузки и управления памятью предусмотрен

диспетчер исполнения Rtm.Exe.

Исполняемые библиотеки для защищенного режима находятся в биб-

лиотечном файле Tpp.Tpl (Tpw.Tpl для Windows). Другие модули храня-

тся в файлах с расширением *.Tpp и *.Tpw.

Для создания программ для защищенного режиме необходим Borland

Pascal (Bp). Для компиляции программы для работы в защищенном режи-

ме следует установить соответствующий режим компиляции командой

=>Compile\Target...\Protected mode Aplication\Ok

Ранее созданные программы для реального режима будут работать

и в защищенном режиме. Основные проблемы могут возникать при исполь-

зовании динамической памяти.

В Windows-программах для предоставления доступа к средствам за-

щищенного режима предусмотрен модуль WinApi, содержащий большой на-

бор процедур и функций для управления памятью, модулями, ресурсами,

селектором.