При разработке динамически загружаемых библиотек нужно всегда думать об их удобном использовании. Давайте, например, обратимся к последнему примеру и представим, что в библиотеке не две процедуры, а сотня, и нужны они не в одной программе, а в нескольких. В этом случае намного удобнее вынести external-объявления процедур в отдельный модуль, подключаемый ко всем программам в секции uses. Такой модуль условно называют модулем импорта. Кроме объявлений внешних подпрограмм он обычно содержит определения типов данных и констант, которыми эти подпрограммы оперируют.
Модуль импорта для библиотеки SortLib будет выглядеть так (приложение № ):
unit SortLib; interface procedure BubleSort(var Arr: array of Integer); stdcall;procedure QuickSort(var Arr: array of Integer); 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'; end. |
Выполняемый файл библиотеки должен всегда сопровождаться модулем импорта, чтобы другие разработчики могли разобраться с параметрами подпрограмм и правильно воспользоваться библиотекой.