ВУЗ:
Составители:
Рубрика:
будет возвращено nil. Если же используется индекс, то при отсутствии
подпрограммы nil не возвращается, поэтому надёжнее пользоваться именем.
В примере 4 реализован динамический импорт функции
Min из библиотеки
MathLib.dll. Для работы с адресом функции объявлен процедурный тип
TMin и
переменная
Min этого типа:
type TMin = function (X, Y: Integer): Integer;
Var Min: TMin;
В дальнейшем переменной Min присваивается значение адреса,
возвращаемого функцией
GetProcAddress. Оперция @ означает получение
адреса:
@Min := GetProcAddress(LibHandle, 'Min');
16.4. Многомодульные библиотеки
Ранее были рассмотрены приёмы создания простейших DLL. Реальные
библиотеки часто являются многомодульными.
В этом случае файл проекта dll-библиотеки должен содержать раздел uses,
подключающий все необходимые модули, раздел
exports и операторный блок
Begin ... end, инициализирующий библиотеку. При этом каждый модуль
может иметь секции
initialization и finalization.
Последовательность создания многомодульной библиотеки:
1) выполнить команду File|New и выбрать DLL для получения заготовки
проекта библиотеки;
2) выполнить команду File|New, выбрать Unit для создания нового модуля;
3) сохранить заготовки под нужными именами;
4) наполнить модуль содержанием: объявить и сформировать процедуры и
функции (в интерфейсной секции выполнить объявления, а в секции
implementation – записать тексты соответствующих подпрограмм);
5) в файле проекта создать секцию
exports; выбрать определённый
способ распознавания подпрограмм (по имени или по индексу);
6) сохранить модуль и проект;
160
будет возвращено nil. Если же используется индекс, то при отсутствии
подпрограммы nil не возвращается, поэтому надёжнее пользоваться именем.
В примере 4 реализован динамический импорт функции Min из библиотеки
MathLib.dll. Для работы с адресом функции объявлен процедурный тип TMin и
переменная Min этого типа:
type TMin = function (X, Y: Integer): Integer;
Var Min: TMin;
В дальнейшем переменной Min присваивается значение адреса,
возвращаемого функцией GetProcAddress. Оперция @ означает получение
адреса:
@Min := GetProcAddress(LibHandle, 'Min');
16.4. Многомодульные библиотеки
Ранее были рассмотрены приёмы создания простейших DLL. Реальные
библиотеки часто являются многомодульными.
В этом случае файл проекта dll-библиотеки должен содержать раздел uses,
подключающий все необходимые модули, раздел exports и операторный блок
Begin ... end, инициализирующий библиотеку. При этом каждый модуль
может иметь секции initialization и finalization.
Последовательность создания многомодульной библиотеки:
1) выполнить команду File|New и выбрать DLL для получения заготовки
проекта библиотеки;
2) выполнить команду File|New, выбрать Unit для создания нового модуля;
3) сохранить заготовки под нужными именами;
4) наполнить модуль содержанием: объявить и сформировать процедуры и
функции (в интерфейсной секции выполнить объявления, а в секции
implementation – записать тексты соответствующих подпрограмм);
5) в файле проекта создать секцию exports; выбрать определённый
способ распознавания подпрограмм (по имени или по индексу);
6) сохранить модуль и проект;
160
Страницы
- « первая
- ‹ предыдущая
- …
- 158
- 159
- 160
- 161
- 162
- …
- следующая ›
- последняя »
