Модуль импорта
При разработке динамически загружаемых библиотек нужно всегда думать об их удобном использовании. Если в библиотеке не две процедуры, а сотня, и нужны они не в одной программе, а в нескольких, то в этом случае намного удобнее вынести external -объявления процедур в отдельный модуль, подключаемый ко всем программам в секции uses. Такой модуль условно называют модулем импорта. Кроме объявлений внешних подпрограмм он обычно содержит определения типов данных и констант, которыми эти подпрограммы оперируют.
Модуль импорта для библиотеки SortLib будет выглядеть так:
unit SortLib;
Interface
procedure BubleSort(var Arr: array of Integer); stdcall;
procedure QuickSort(var Arr: array of Integer); stdcall;
procedure HelloWorld(AForm: TForm); stdcall;
Implementation
const DllName = 'SortLib.dll';
Procedure BubleSort(var Arr: array of Integer); external
DllName name 'BubleSortIntegers';
Procedure QuickSort(var Arr: array of Integer); external
DllName name 'QuickSortIntegers';
procedure HelloWorld(AForm: TForm); external DllName;
End.
Выполняемый файл библиотеки должен всегда сопровождаться модулем импорта, чтобы потребитель мог разобраться с параметрами подпрограмм и правильно воспользоваться библиотекой.