Разработка приложений в системе Delphi. Шейкер Т.Д. - 156 стр.

UptoLike

Составители: 

В теле DLL могут быть объявлены константы, типы, переменные,
процедуры и функции, но экспортировать она может только процедуры и
функции.
16.2. Способы экспорта
Каждая экспортируемая из DLL подпрограмма может идентифицироваться
двумя уникальными ключами: числовым индексом (
index) и строковым
именем (
name). Индексэто целое положительное число в диапазоне от 1 до
32767. Имя представляет собой последовательность символов, в которой
строчные и прописные буквы различаются. Например, секция
exports может
быть оформлена следующим образом:
exports
Myproc1, //По имени процедуры
Myproc2 name 'MyTest', //По новому имени
Myproc3 index 3, //По номеру
Myfunc4 index 4 name 'MaxInt', //По номеру и новому имени
Myfunc5 index 5 name 'MinInt' resident;
//По номеру и резидентному новому имени
Использование нового имени или индекса является необязательным, но в
некоторых случаях очень полезно. Например, при вызове из DLL функции с
именем, недопустимым по правилам языка
Pascal. Если имя или индекс не
заданы, то компилятор в качестве индекса назначает порядковый номер, а в
качестве имениимя процедуры или функции. Если индекс не задан, то при
импортировании можно использовать только имя. Для вызова подпрограммы
по индексу его надо задавать явно.
Для хранения имён экспортируемых подпрограмм в dll-файлах
предусмотрены специальные таблицы. Если к имени экспортируемой
подпрограммы в секции
exports добавлено ключевое слово resident, то
компилятор помещает его в таблицу резидентных имён, в противном случаев
таблицу нерезидентных имён. Таблица резидентных имён всегда загружается в
оперативную память вместе с программным кодом DLL и остаётся там вплоть
до выгрузки библиотеки. Резидентные процедуры и функции отыскиваются
быстрее.
156
    В теле DLL могут быть объявлены константы, типы, переменные,
процедуры и функции, но экспортировать она может только процедуры и
функции.

                         16.2. Способы экспорта
    Каждая экспортируемая из DLL подпрограмма может идентифицироваться
двумя уникальными ключами: числовым индексом (index) и строковым
именем (name). Индекс – это целое положительное число в диапазоне от 1 до
32767. Имя представляет собой последовательность символов, в которой
строчные и прописные буквы различаются. Например, секция exports может
быть оформлена следующим образом:
exports
Myproc1, //По имени процедуры
Myproc2 name 'MyTest',   //По новому имени
Myproc3 index 3,    //По номеру
Myfunc4 index 4 name 'MaxInt',     //По номеру и новому имени
Myfunc5 index 5 name 'MinInt' resident;
                      //По номеру и резидентному новому имени
    Использование нового имени или индекса является необязательным, но в
некоторых случаях очень полезно. Например, при вызове из DLL функции с
именем, недопустимым по правилам языка Pascal. Если имя или индекс не
заданы, то компилятор в качестве индекса назначает порядковый номер, а в
качестве имени – имя процедуры или функции. Если индекс не задан, то при
импортировании можно использовать только имя. Для вызова подпрограммы
по индексу его надо задавать явно.
    Для    хранения   имён   экспортируемых       подпрограмм    в   dll-файлах
предусмотрены    специальные    таблицы.   Если    к   имени    экспортируемой
подпрограммы в секции exports добавлено ключевое слово resident, то
компилятор помещает его в таблицу резидентных имён, в противном случае – в
таблицу нерезидентных имён. Таблица резидентных имён всегда загружается в
оперативную память вместе с программным кодом DLL и остаётся там вплоть
до выгрузки библиотеки. Резидентные процедуры и функции отыскиваются
быстрее.

                                     156