Содержание материала

 

Вызов процедур и функций, загруженных из DLL.

 

Способ вызова процедур и функций зависит от того, каким образом вы загрузили динамическую библиотеку,

в которой эти подпрограммы находятся.

 

Вызов функций и процедур из статически загруженных DLL достаточно прост. Первоначально в приложении

должно содержаться описание экспортируемой функции (процедуры). После этого вы можете их использовать

точно так же, как если бы они были описаны в одном из модулей вашего приложения.

Для импорта функции или процедуры, содержащейся в DLL , необходимо использовать

модификатор external в их объявлении. К примеру, для рассмотренной нами выше процедуры HelloWorld

в вызывающем приложении должна быть помещена следующая строка:

 

procedure SayHello(AForm : TForm); external myfirstdll.dll';

Ключевое слово external сообщает компилятору, что данная процедура может быть найдена в

динамической библиотеке (в нашем случае - myfirstdll.dll).

Далее вызов этой процедуры выглядит следующим образом:

 

...

HelloWorld(self);

...

 

При импорте функции и процедур будьте особенно внимательны при написании их имен и интерфейсов!

Дело в том, что в процессе компиляции приложения не производится проверки на правильность имен объектов,

экспортируемых из DLL, осуществляться не будет, и если вы неправильно описали какую-нибудь функцию,

то исключение будет сгенерировано только на этапе выполнения приложения.

 

Импорт из DLL может проводиться по имени процедуры (функции), порядковому номеру или

с присвоением другого имени.

 

В первом случае вы просто объявляете имя процедуры и библиотеку, из которой ее импортируете

(мы это рассмотрели чуть выше). Импорт по порядковому номеру требует от вас указание этого самого номера:

 

procedure HelloWorld(AForm : TForm); external myfirstdll.dll index 15;

 

В этом случае имя, которое вы даете процедуре при импорте не обязательно должно совпадать с тем,

которое было указано для нее в самой DLL. Т.е. приведенная выше запись означает,

что вы импортируете из динамической библиотеки myfirstdll.dll процедуру, которая в ней экспортировалась

пятнадцатой, и при этом в рамках вашего приложения этой процедуре дается имя SayHello.

 

Если вы по каким-то причинам не применяете описанный выше способ импорта,

но тем не менее хотите изменить имя импортируемой функции (процедуры), то можно воспользоваться третьим методом:

 

procedure CoolProcedure;  external myfirstdll.dll name 'DoSomethingReallyCool';

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить