end;
Procedure MyProc; Export;
begin
end;
Exports
MyFunc, MyProc;
begin end.
Раздел Exports помогает компилятору и компоновщику создать специальный заголовок DLL— модуля, в котором перечисляются имена подпрограмм и адреса их точек входа. В DLL может быть несколько списков Exports, но перечисляемые в них подпрограммы должны быть описаны где — то выше по тексту библиотеки.
Помимо имени подпрограммы в заголовок DLL помещается также ее порядковый номер, точнее присвоенный ей целочисленный индекс. Это позволяет вызывающей программе ссылаться не на имя, а на индекс подпрограммы и тем самым уменьшить затраты времени на установление с ней связи. Индекс присваивается подпрограмме по порядку ее появления в списках Exports', первая подпрограмма в первом списке получает индекс 1, следующая — 2 и т.д. Программист может изменить умалчиваемую индексацию и явно указать индекс подпрограммы, добавив за ее именем в списке Exports слово index та. целое число без знака в диапазоне от 1 до 32767:
Expots
MyFunc index 1, MyProc index 2;
Во избежание возможной путаницы с индексацией советую явно задавать индексы всем экспортируемым подпрограммам1.
Программист может определить внешнее имя экспортируемой подпрограммы отличным от ее настоящего имени. Для этого в списке Exports добавляется слово name и внешнее имя в апострофах:
Exports
MyFunc index 1 name 'NEWFUNC';
Обратите внимание: указываемое в апострофах внешнее имя должно состоять из заглавных букв. Если в приведенном выше примере задать ' NewFunc', вызывающая программа не сможет найти функцию MyFunc ни по имени, ни по индексу! По умолчанию ВР создает внешнее имя совпадающим с настоящим, но преобразует его буквы к заглавным.
Вызывающая программа может ссылаться или на имя экспортируемой подпрограммы, или на ее индекс. При вызове по имени программа про—
1 Мною замечено, что ВР начинает умалчиваемую индексацию не с 1, а с 2, что может существенно повлиять на использование DLL. Более того, даже если первой подпрограмме явно присвоить индекс 1, следующая за ней подпрограмма получит умалчивоемый индекс 3, d не 2.