Шаг 17.
Описание экспорта

    На этом шаге мы рассмотрим правила описания экспортируемых подпрограмм.

    Подразделы описания экспортируемых имен exports могут многократно встречаться в любом месте описательной части программы или динамически связываемой библиотеки (DLL). Каждая запись в предложении exports задает идентификатор экспортируемой процедуры или функции. При этом необходимо следить, чтобы эта процедура или функция была описана до указания ее имени в подразделе exports. Кроме того, описание экспортируемой процедуры или функции должно содержать директиву export (без буквы "s" в конце!). В качестве экспортируемых имен могут выступать уточненные идентификаторы.

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

    Описание подраздела экспортируемых имен начинается с зарезервированного слова exports, за которым следует список записей экспорта, разделенных запятыми. Одна запись экспорта в простейшем случае представляет собой просто экспортируемый идентификатор.

    Каждая запись экспорта может включать в себя стандартную директиву index, за которой следует целочисленное значение в диапазоне от 1 до 32767. Число, указанное в index, ставит в соответствие экспспортируемой процедуре или функции специальное порядковое значение. Если в записи экспорта описание index отсутствует, то порядковое значение присваивается автоматически.

    Запись экспорта также может содержать стандартную директиву name, за которой следует строковая константа. Эта константа задает процедуре или функции имя, с которым она будет экспортироваться. Если описание name отсутствует, то процедура или функция экспортирует со своим идентификатором.

    Кроме того, запись экспорта может включать в себя стандартную директиву resident, при указании которой информация об экспорте будет оставаться в оперативной памяти, пока DLL загружена. Это позволяет существенно уменьшить время поиска подпрограммы в динамически загружаемой библиотеке по имени.

    Пример:

exports			
    Subroutine1  index  1,	
    Subroutine2  index  2  name 'SUB2' ,
    Subroutine3  index  3  resident;

    На следующем шаге мы рассмотрим описание поточно-локальных переменных.




Предыдущий шаг Содержание Следующий шаг