ПредишенСледващото

Заявленията DLL

Така че, защо имаме нужда от DLL, а когато те се използват. Тук са само някои от областите на тяхното приложение:

  • Индивидуални библиотеки. съдържащ полезна за програмисти разширени функции. Например, функции за струни, или - сложни библиотеки за конвертиране на изображения.
  • ресурси за съхранение. В DLL може да се съхранява не само програмите и функциите, но и на всички видове ресурси - икони, картини, низови масиви, менюта и т.н.
  • за подкрепа на библиотеките. Като пример, библиотека от известни пакети като: DirectX. ICQAPI (API за ICQ), OpenGL и т.н.
  • Части от програмата. Например, един DLL може да се съхранява в прозореца на програмата (форма) и т.н.
  • Модули (Plugins). - Това е, когато реално възможностите за програмист мисли! Приставките - плъгини, които разширяват възможностите му. Например, в тази статия ще разгледаме теорията на създаването на приставка за своя собствена програма.
  • Споделен ресурс. DLL (Dynamic Link Library) може да се използва от няколко приложения или процеси (например, споделяне - споделен ресурс)

Кратко описание на функциите и техники за работа с DLL

Така че това, което са техниките и функции трябва да се използват за работа с DLL? Нека разгледаме два начина за импортиране на функции от библиотеката:

1 начин. DLL свързване към програмата. Това е най-прост и лесен за използване метод функции, внесени от DLL. Въпреки това (и това трябва да се отбележи), този метод има много значителен недостатък - ако не бъде намерен в библиотеката, която се използва от програмата, след което програмата просто няма да започне, като грешка и съобщи, че не е намерен ресурс на DLL. Едно търсене в библиотеката ще се извършва: в текущата директория, в директорията на програмата, в директория Windows \ система и т.н.
Ами, за начало - цялостната форма на рецепцията:

изпълнение
.
функция имеНаФункцията (par1: Par1Type; PAR2: Par2Type.): ReturnType; stdcall; външни "DLLNAME.DLL" име "имеНаФункцията" индекс FuncIndex;
// или (ако не е функция, и процедурата):
процедура ProcedureName (par1: Par1Type; PAR2. Par2Type); stdcall; външни "DLLNAME.DLL" име "ProcedureName" индекс ProcIndex;

Ето: имеНаФункцията (или ProcedureName) - име на функцията (или процедура), които ще се използват в програмата си;
Par1, PAR2. - параметрите на имената на функция или процедура;
Par1Type, Par2Type. - видове параметри функция или процедура (например, цяло число);
ReturnType - връщане тип (за функции само);
stdcall - директива, която точно трябва да съответстват на използваните в самата DLL;
външни "DLLNAME.DLL" - директива посочва името на външен DLL, които ще бъдат внесени от функцията или процедурата (в този случай - DLLNAME.DLL);
наричам 'имеНаФункцията "(" ProcedureName ") - директива, която определя точното име на функцията в най-DLL. Това е допълнителна директива, която ви позволява да използвате функцията за програма с различно име от истината (което е в библиотеката);
индекс FunctionIndex (ProcedureIndex) - Директива, което показва серийния номер или функция в процедура на DLL. Това също е опция директива.

2 метод. Динамично натоварване DLL. Тя е много по-сложно, но и по-елегантен начин. Той е лишен от липсата на първия метод. Единственото нещо, което е неприятно - размера на код, необходими за прилагането на този метод, трудността е, че функцията на DLL viewable.END_BOLD внесени само когато това DLL е зареден и се съхраняват в паметта. С примера може да се намери по-долу, и все пак - кратко описание на този метод, използван WinAPI функции:

LoadLibrary (LibFileName: PChar) - LibFileName товарене каза библиотеки в паметта. След успешното завършване, функцията връща манипулатор (THandle) DLL в паметта.
GetProcAddress (Модул: THandle; ProcName: PChar) - прочита адреса на функцията за експортиране на библиотеката. При успешно завършване, функцията връща дръжка (TFarProc) функции в натоварената DLL.
FreeLibrary (LibModule: THandle) - LibModule обезсилва и освобождава свързаното паметта. Трябва да се отбележи, че след като се обадите на тази процедура, библиотечни функции, вече не са налични.

Практика и примери

Е, сега е време да ви дам няколко примера за използване на посочените по-горе методи и техники:

Пример 1. свързване към програма DLL

Ако искате да поставите във формуляра за DLL диалогов, е необходимо да се направи две функции - отваряне и затваряне на формата. В този случай, трябва да се помни, за да DLL дръжка тази форма.

Тук ние няма да се обсъди подробно приставките, защото вече по-горе примери ще ви помогнат лесно да разбере лъвския дял на програмиране DLL. Просто си спомни, че щепселът - приставка, която се простира на своите възможности. В този случай, програмата трябва да включва задължително наличието на такива добавки и да им позволи да изпълнят своята мисия.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!