Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория DLL.doc
Скачиваний:
3
Добавлен:
18.08.2019
Размер:
152.06 Кб
Скачать

Вместо заключения

Использование динамически подключаемых библиотек не так сложно, как это может показаться на первый взгляд. DLL предоставляют широчайшие возможности для оптимизации работы приложений, а также работы самих программистов. Используйте DLL и, возможно, ваша жизнь станет легче!

Простой пример DLL

Автор: Steve Schafer

library MyDll;

uses Windows;

function SomeFunc(I: Integer): Integer; stdcall;

begin

if Odd(I) then

Result := 3 * I + 1

else

Result := I div 2;

end;

exports

SomeFunc;

begin

end.

И вот модуль импорта, который вы можете включить в любой проект, которому необходим доступ к функциям DLL:

unit MyDllImport;

interface

uses Windows;

function SomeFunc(I: Integer): Integer; stdcall;

implementation

function SomeFunc; external 'mydll.dll';

end.

Простой шаблон для Delphi DLL

П

ример DLL

Без модулей

Во-первых, "скелет" DLL, которую вы хотели, сохраняете как DLLFRAME.DPR:

{---------------------DLLFRAME.DPR--------------------------} library Dllframe; uses WinTypes; function  GetString : string ; export ; begin

Result := 'Привет из DLL!' ;

end; exports

GetString;

begin end. {-----------------------------------------------------------}

Теперь напишем вызывающую программу и сохраним ее как DLLCALL.DPR:

{---------------------DLLCALL.DPR---------------------------} program Dllcall; uses

Dialogs;

{$R *.RES} function GetString : string ; far ; external 'DLLFRAME' ; begin

MessageDlg( GetString, mtInformation, [ mbOK ], 0 ) ;

end.

С модулями

Код вызывающей программы, сохраните ее как DLLCALL.DPR: {---------------------DLLCALL.DPR---------------------------} program Dllcall; uses

Dialogs;

{$R *.RES} function GetString : string ; far ; external 'MyDLL' ; begin

MessageDlg( GetString, mtInformation, [ mbOK ], 0 ) ;

end. {-----------------------------------------------------------}

"скелет" DLL, которую вы хотели, сохраняете как DLLFRAME.DPR:

face="Courier New" size="2"> {---------------------DLLFRAME.DPR--------------------------} library Dllframe; uses DLLUnit; exports

GetString;

begin end. {-----------------------------------------------------------}

Модуль, который мы сохраняем как dllunit.pas:

{---------------------dllunit.pas--------------------------} unit DLLUnit; interface uses WinTypes; function GetString: string; export; implementation function GetString: string; begin

GetString := 'Привет из DLL!' ;

end ; begin end.