Карта сайтаСсылкиКонтакты

Создание и использование DLL в Delphi

PDF Печать
Статьи

Динамическая библиотека, или DLL, является совокупностью подпрограмм (маленьких программ), которые могут вызываться приложениями или другими DLL. Подобно модулям, DLL содержит общий код или ресурсы, которые могут использовать несколько приложений одновременно из одного экземпляра DLL. В сущности Windows - это просто совокупность DLL.

Естественно, используя 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!


 

Комментарии   

 
+2 #1 aaaaaaaboroz 28.07.2015 12:35
:-| :-| :eek:
Цитировать
 
 
0 #2 sergey 06.11.2016 03:54
А у меня все время пишет "не найдена точка входа в поцедуру..."
Цитировать
 
 
0 #3 Александр 26.03.2017 13:54
Спасибо большое доброму человеку, работает 8)
Цитировать
 
 
0 #4 nik_7 26.05.2017 18:45
а как константы вызываются из длл?
Цитировать
 
 
0 #5 Serge 26.05.2017 21:43
Создавать ресурсы: http://delphiru.ru/resources/443-dll-with-jpeg-and-other
Цитировать
 

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


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