ВУЗ:
Составители:
Рубрика:
В теле 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
Страницы
- « первая
- ‹ предыдущая
- …
- 154
- 155
- 156
- 157
- 158
- …
- следующая ›
- последняя »
