🗊Презентация DLL Dynamic Link Library

Категория: Образование
Нажмите для полного просмотра!
/ 16

Вы можете ознакомиться и скачать презентацию на тему DLL Dynamic Link Library. Доклад-сообщение содержит 16 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





DLL
Dynamic Link Library
Описание слайда:
DLL Dynamic Link Library

Слайд 2





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

Слайд 3






Копия приложения представляет из себя контекст, в котором выполняется модуль приложения.
DLL - библиотека также является модулем. Она находится в памяти в единственном экземпляре и содержит сегмент кода и ресурсы, а также сегмент данных
Описание слайда:
Копия приложения представляет из себя контекст, в котором выполняется модуль приложения. DLL - библиотека также является модулем. Она находится в памяти в единственном экземпляре и содержит сегмент кода и ресурсы, а также сегмент данных

Слайд 4





DLL - библиотека, в отличие от приложения не имеет ни стека, ни очереди сообщений. Функции, помещенные в DLL, выполняются в контексте вызвавшего приложения, пользуясь его стеком. Но эти же функции используют сегмент данных, принадлежащий библиотеке, а не копии приложения
DLL - библиотека, в отличие от приложения не имеет ни стека, ни очереди сообщений. Функции, помещенные в DLL, выполняются в контексте вызвавшего приложения, пользуясь его стеком. Но эти же функции используют сегмент данных, принадлежащий библиотеке, а не копии приложения
Экономия памяти достигается за счет того, что все запущенные приложения используют один модуль DLL, не включая те или иные стандартные функции в состав своих модулей.
Описание слайда:
DLL - библиотека, в отличие от приложения не имеет ни стека, ни очереди сообщений. Функции, помещенные в DLL, выполняются в контексте вызвавшего приложения, пользуясь его стеком. Но эти же функции используют сегмент данных, принадлежащий библиотеке, а не копии приложения DLL - библиотека, в отличие от приложения не имеет ни стека, ни очереди сообщений. Функции, помещенные в DLL, выполняются в контексте вызвавшего приложения, пользуясь его стеком. Но эти же функции используют сегмент данных, принадлежащий библиотеке, а не копии приложения Экономия памяти достигается за счет того, что все запущенные приложения используют один модуль DLL, не включая те или иные стандартные функции в состав своих модулей.

Слайд 5






Экономия памяти достигается за счет того, что все запущенные приложения используют один модуль DLL, не включая те или иные стандартные функции в состав своих модулей.
Описание слайда:
Экономия памяти достигается за счет того, что все запущенные приложения используют один модуль DLL, не включая те или иные стандартные функции в состав своих модулей.

Слайд 6





Создание DLL в Delphi (экспорт)

library ProjectDLL;
{  информативные строк.}
uses
  SysUtils,
  Classes;
{$R *.RES}
exports 
begin
end.
Описание слайда:
Создание DLL в Delphi (экспорт) library ProjectDLL; { информативные строк.} uses SysUtils, Classes; {$R *.RES} exports begin end.

Слайд 7





Exports
exports
  Func1 index 10 name 'Fun',
    Func3 index 11,
  Func4 index 11,//Ошибка, такой индекс уже существует
  Func5 name 'Don';
Объявлять можно и так: 
exports Func1 index 10 name 'Fun',
exports Func2 Insert,
exports Func3 index 11 
Резидентные
exports
  ExportByName name 'MYEXPORTPROC' resident;
Описание слайда:
Exports exports Func1 index 10 name 'Fun', Func3 index 11, Func4 index 11,//Ошибка, такой индекс уже существует Func5 name 'Don'; Объявлять можно и так: exports Func1 index 10 name 'Fun', exports Func2 Insert, exports Func3 index 11 Резидентные exports ExportByName name 'MYEXPORTPROC' resident;

Слайд 8





Использование DLL в Delphi (импорт)

В вашей программе следует объявить функции, импортируемые из DLL таким образом:
procedure ImportByName;external 'MYDLL' name 'MYEXPORTPROC';  
procedure ImportByOrdinal;  external  'MYDLL'  index  10;  
procedure MyExportFunc1;  external  'MYDLL';
Этот способ называется статическим импортом.
Описание слайда:
Использование DLL в Delphi (импорт) В вашей программе следует объявить функции, импортируемые из DLL таким образом: procedure ImportByName;external 'MYDLL' name 'MYEXPORTPROC'; procedure ImportByOrdinal; external 'MYDLL' index 10; procedure MyExportFunc1; external 'MYDLL'; Этот способ называется статическим импортом.

Слайд 9





Динамическая загрузка dll
type  TMyProc  = procedure(Handle: THandle); stdcall; процедурный тип функции подгружаемый из библиотеки;
var
  Handle  :  THandle; - указатель на библиотеку 
  MyImportProc  :  TMyProc; - подгружаемая функция 
begin
  Handle:=LoadLibrary('MYDLL');-динамическая загрузка DLL 
@MyImportProc:=GetProcAddress(Handle,'MYEXPORTPROC');
Получение адреса точки входа нужной функции
FreeLibrary(Handle); - Освобождение ресурса
end;
Описание слайда:
Динамическая загрузка dll type TMyProc = procedure(Handle: THandle); stdcall; процедурный тип функции подгружаемый из библиотеки; var Handle : THandle; - указатель на библиотеку MyImportProc : TMyProc; - подгружаемая функция begin Handle:=LoadLibrary('MYDLL');-динамическая загрузка DLL @MyImportProc:=GetProcAddress(Handle,'MYEXPORTPROC'); Получение адреса точки входа нужной функции FreeLibrary(Handle); - Освобождение ресурса end;

Слайд 10





Пример
Описание слайда:
Пример

Слайд 11





library ProjectDLL;
library ProjectDLL;
uses
  SysUtils, Classes;
{$R *.RES}
exports ShowAbout index 10;
begin
end.
Описание слайда:
library ProjectDLL; library ProjectDLL; uses SysUtils, Classes; {$R *.RES} exports ShowAbout index 10; begin end.

Слайд 12





File->New Form 
File->New Form
Описание слайда:
File->New Form File->New Form

Слайд 13





текст модуля 
var
  Form1: TForm1;
  procedure ShowAbout(Handle: THandle);export;stdcall;

после implementation и ключа {$R *.DFM}: 
procedure ShowAbout(Handle: THandle);
begin
 //Установить указатель на приложение
 Application.Handle := Handle;
 //Создать форму
 Form1:= TForm1.Create(Application);
 //Отобразить
 Form1.ShowModal;
 //Очистить
 Form1.Free;
end;
Описание слайда:
текст модуля var Form1: TForm1; procedure ShowAbout(Handle: THandle);export;stdcall; после implementation и ключа {$R *.DFM}: procedure ShowAbout(Handle: THandle); begin //Установить указатель на приложение Application.Handle := Handle; //Создать форму Form1:= TForm1.Create(Application); //Отобразить Form1.ShowModal; //Очистить Form1.Free; end;

Слайд 14





В новом проекте 
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;
procedure ShowAbout(Handle: THandle)stdcall;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  procedure ShowAbout;external 'ProjectDLL.dll' index 10;
implementation
Описание слайда:
В новом проекте unit Unit2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; procedure ShowAbout(Handle: THandle)stdcall; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; procedure ShowAbout;external 'ProjectDLL.dll' index 10; implementation

Слайд 15





Вызов функции из DLL
Теперь поместим на форму кнопку и создадим для неё следующее событие:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowAbout(Handle);
end;
Описание слайда:
Вызов функции из DLL Теперь поместим на форму кнопку и создадим для неё следующее событие: procedure TForm1.Button1Click(Sender: TObject); begin ShowAbout(Handle); end;

Слайд 16






library MyFirstDLL; 
uses SysUtils, Classes, Forms, Windows; procedure HelloWorld(AForm : TForm); begin 
MessageBox(AForm.Handle, Hello world!', DLL Message Box', MB_OK or MB_ICONEXCLAMATION); 
end; 
exports HelloWorld; 
begin 
end.
Описание слайда:
library MyFirstDLL; uses SysUtils, Classes, Forms, Windows; procedure HelloWorld(AForm : TForm); begin MessageBox(AForm.Handle, Hello world!', DLL Message Box', MB_OK or MB_ICONEXCLAMATION); end; exports HelloWorld; begin end.



Теги DLL Dynamic Link Library
Похожие презентации
Mypresentation.ru
Загрузить презентацию