Программирование для защищенного режима 235

Procedure CmplxDiv(x, у: TComplex; var z: TComplex); Export;

var

zz: Single;

begin

zz := sqr(y.Re) + sqr(y.Im);

z.Re := (x.Re * y.Re + x.Im * y.Im)/zz;

z.Im := (x.Re * y.Im - x.Im * y.Re)/zz end;

Exports

CmplxAdd index 1 name 'ADD' resident,

CmplxSub index 2,

CmplxMul index 3,

CmplxDiv index 4;

begin end.

9.5.2. Использование DLL

Для использование подпрограмм из DLL необходимо описать их как внешние, добавив за словом External имя библиотеки в апострофах:

Procedure MyProc; Far; External 'MyDLL';

Обратите внимание: перед External нало обязательно указать Far. в противном случае компилятор потребует поставить точку с запятой после слова External. Как уже говорилось, подпрограмма вызывается по имени или по индексу. В нашем примере из библиотеки MyDLL вызывается подпрограмма с внешним именем 'MYPROC'. Если нужно сослаться на индекс подпрограммы, за именем библиотеки указывается слово index и индекс:

Procedure MyProc; Far; External 'MyDLL' index 2;

В этом случае имя, под которым подпрограмма будет известна программе, может не совпадать с ее внешним DLL— именем. Впрочем, программист может и явно переопределить имя подпрограммы, даже если он ссылается на ее внешнее имя:

Procedure MyProc; Far; External 'MyDLL' Name 'ExtName';

В это варианте предполагается, что экспортируется процедура с внешним именем ' EXTNAME'.

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

В следующей программе используется библиотека Complex, описанная на предыдущей странице. {$N+,E+} type