Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algoritmizatsia_i_programmirovanie_ShPOR.doc
Скачиваний:
6
Добавлен:
26.04.2019
Размер:
376.83 Кб
Скачать

Создание динамической библиотеки

Следующие несколько строк демонстрируют, как создать простой DLL, используя Delphi.

Начинающим Дельфистам нужно из меню выбрать File | New... DLL. Это создаст шаблон нового DLL в окне редактора. Выделите заданный по умолчанию текст и замените его следующим кодом:

library TestLibrary;

uses SysUtils, Classes, Dialogs;

procedure DllMessage; export;

begin

ShowMessage('Hello world from a Delphi DLL') ;

end;

exports DllMessage;

begin

end.

Если Вы посмотрите на файл проекта любого приложения Delphi, Вы увидите, что он начинается с зарезервированного слова Program. DLL в отличие от этого, начинается с зарезервированного слова Library. Затем это сопровождается пунктом uses для любых необходимых модулей. В этом простом примере за этим следует процедура по имени DllMessage, которая не делает ничего, кроме показа простого сообщения.

В конце этого текста, стоит инструкция exports. Здесь включен список подпрограмм, которые будут экспортированы из DLL и могут вызываться другими приложениями. Это означает, что, например, в DLL находится 5 процедур и только 2 из них (перечисленных в разделе exports) могут вызываться из внешних программ (3 из них подпрограммы в DLL).

Чтобы использовать этот простой DLL, мы должны скомпилировать его, нажав Ctrl+F9. Это создасть DLL по имени SimpleMessageDll.dll в папке проекта.

А теперь давайте посмотрим, как вызвать процедуру DllMessage из (статически загруженной) DLL.

Чтобы импортировать процедуру, содержащуюся в DLL, мы используем ключевое слово external в объявлении процедуры. Например, объявление процедуры DllMessage, показанной ранее, выглядела бы так:

procedure DllMessage; external 'SimpleMessageDLL.dll'

А вызов процедуры выглядит так:

DllMessage;

Полный код для формы Form1 с TButton по имени Button1 (для вызова функции DllMessage) выглядит так:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject) ;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

procedure DllMessage; external 'SimpleMessageDLL.dll'

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject) ;

begin

DllMessage;

end; end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]