14.8 Внешние (external) функции

На верх  Назад  Вперёд

Модификатор external используется для объявления функции, которая находится во внешнем объектном файле. Это позволяет использовать функцию (или процедуру) в каком-либо коде, содержащую реализацию в объектном файле, на момент компиляции они должны быть связаны.


Директива external

1408


Она заменяет, блок кода функции (или процедуры). В качестве примера:

program CmodDemo;

{$LINKLIB c}

 

Const P : PChar = 'Это интересно!';

 

Function StrLen(P: PChar): Longint;cdecl; external name 'strlen';

begin

WriteLn ('Длина (',p,') : ',StrLen(p));

end.

Примечание:

Параметры объявленные функции C (у Вас в программе) должна точно соответствовать параметрам в C объявлении (в коде С).

Если модификатор external сопровождается строковой константой:

external 'lname';

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

Имя функции в библиотеке тоже может быть указано:

external 'lname' name 'Fname';

Сообщим компилятору, что функция находится в библиотеке lname, под именем Fname. Компилятор автоматически свяжет эту библиотеку с программой, и использует правильное имя функции. Под Windows и os/2 может быть использована и следующая форма:

external 'lname' Index Ind;

Сообщаем компилятору, что функция находится в библиотеке lname, с индексом Ind. Компилятор будет автоматически связать эту библиотеку с программой, и использовать правильный индекс функции.

Наконец, директиву external можно использовать, для указания имени внешний функции:

external name 'Fname';

{$L myfunc.o}

Сообщаем компилятору, что функция имеет имя Fname. Правильная библиотека или объектный файл (в данном случае myfunc.o) также должны быть указаны, гарантируя, что функция Fname будет найдена на стадии компоновки.