Библиотеки dll (dynamically linked libraries):
Они находятся в файле с расширением .dll либо в текущем каталоге приложения (локальные), либо в системном каталоге (глобальные библиотеки). Глобальными библиотеками могут пользоваться одновременно несколько приложений.
По своему назначению библиотеки очень похожи на модули, однако, имеют ряд важных отличий.
Библиотека имеет практически ту же структуру, что и модуль:
library
имя библиотеки
;
interface
раздел интерфейса
implementation
раздел реализации
end.
Имя библиотеки должно совпадать с именем pas-файла, в котором библиотека находится.
Имеется также упрощенный синтаксис библиотек - без разделов интерфейса и реализации, совпадающий с упрощенным синтаксисом модулей (за исключением заголовка).
В результате компиляции библиотеки в текущем каталоге создаётся .dll-файл, содержащий откомпилированную библиотеку.
Для подключения библиотеки к основной программе используется директива компилятора {$reference ИмяБиблиотеки}. Например:
{$reference ABC.dll}
{$reference ABC1.dll}
begin
writeln(a.GetType);
end.
Подключение библиотеки может проводиться в любом месте исходного файла.
Библиотеки ABC и ABC1 имеют соответственно вид:
library ABC;
var a: integer;
end.
и
library ABC1;
var a: real;
end.
В первую очередь имя ищется в исходном модуле, затем в модулях, подключенных в разделе uses в порядке справа налево, и только потом - в подключенных библиотеках в порядке подключения.
Согласно этому правилу в примере из предыдущего пункта переменная a будет иметь тип integer.
В случае коллизии имен используемое имя можно предварять именем библиотеки с последующей точкой:
{$reference ABC.dll}
{$reference ABC1.dll}
begin
writeln(ABC1.a.GetType);
end.