Введение в DELPHI

Использование DLL в Delphi (импорт)


Для организации импорта, т.е. доступа к функциям, экспортируемым из DLL, так же как и для их экспорта, Delphi предоставляет стандартные средства.

Для показанных выше примеров, в Вашей программе следует объявить функции, импортируемые из DLL таким образом: { импорт по специфицированному имени } procedure ImportByName;external 'MYDLL' name 'MYEXPORTPROC'; { импорт по индексу } procedure ImportByOrdinal; external 'MYDLL' index 10; { импорт по оригинальному имени } procedure MyExportFunc1; external 'MYDLL';

Этот способ называется статическим импортом.

Как Вы могли заметить, расширение файла, содержащего DLL, не указывается - по умолчанию подразумеваются файлы *.DLL и *.EXE. Как же тогда быть в случае, если файл имеет другое расширение (например, как COMPLIB.DCL в Delphi), или если требуется динамическое определение DLL и импортируемых функций (например, Ваша программа работает с различными графическими форматами, и для каждого из них существует отдельная DLL.)?

Для решения такого рода проблем Вы можете обратиться напрямую к API Windows, используя, так называемый, динамический импорт: uses WinTypes, WinProcs, ... ; type TMyProc = procedure ; var Handle : THandle; MyImportProc : TMyProc; begin Handle:=LoadLibrary('MYDLL'); if Handle>=32 then { if nil then ...... {using imported procedure} end; FreeLibrary(Handle); end;

!!! Синтаксические диаграммы объявлений экспорта/импорта, подмена точки выхода из DLL, и другие примеры, Вы можете найти в OnLine Help Delphi, Object Pascal Language Guide, входящему в Borland RAD Pack for Delphi, и, например, в книге "Teach Yourself Delphi in 21 Days".

Если не говорить о генерируемом компилятором коде (сейчас он более оптимизирован), то все правила синтаксиса остались те же , что и в Borland Pascal 7.0



Содержание раздела