Создание и использование DLL в Delphi
Естественно, используя Delphi, мы можем тоже написать и использовать наши собственные DLL и можем вызывать функции в DLL, разработанном другими разработчиками и на других системах (типа Visual Basic или C/C++).
Создание динамической библиотеки
Следующие несколько строк демонстрируют, как создать простой 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.
Это все! Все просто, как и все в Delphi!
Комментарии