Használata és létrehozása dll a Delphi

Alkalmazások DLL

Szóval, miért van szükségünk egy DLL, és hol használják őket. Íme néhány a területek azok alkalmazását:

  • Az egyes könyvtárak. tartalmazó hasznos a programozók fejlett funkciókat. Például működik vonósokra, vagy - komplex könyvtárak image átalakítás.
  • Tárolási erőforrásokat. A DLL tárolhatja nemcsak a programok és funkciók, hanem mindenféle források - ikonok, festmények, stringtömbök, menük, stb
  • könyvtárak támogatására. Példaként, a könyvtár az ismert csomagolások, mint: DirectX. ICQAPI (API ICQ), OpenGL, stb
  • A program egyes részeit. Például, egy DLL tárolható a program ablakában (alak), stb
  • Dugó (Plugins). - Ez az, ahol a valós lehetőségek programozó gondolatok! A plug-inek - plug-inek, hogy képességeinek bővítése. Például ebben a cikkben fogjuk megvitatni az elmélet létrehozásának plug-in a saját programját.
  • Megosztott erőforrás. DLL (Dynamic Link Library) is használható több alkalmazás vagy folyamat (pl megosztás - megosztott erőforrás)

Rövid leírása funkciók és technikák dolgozó DLL







Tehát mi van a technikákat és működése során kell dolgozni DLL? Nézzük meg a két módszer importálófunkciókkal a könyvtárból:

1 módja. DLL kötődését a programot. Ez a legegyszerűbb és könnyű módszer használható funkciók importált DLL. Ugyanakkor (és ezt fel kell tüntetni), ez a módszer igen jelentős hátránya - ha a könyvtárat, amelyet a program nem található, akkor a program csak nem indul el, megadva a hiba, és jelentette, hogy a DLL erőforrás nem található. A könyvtár keresési kerül sor: az aktuális könyvtárban, a könyvtár, a program a könyvtárban WINDOWS \ SYSTEM, stb
Nos, kezdetnek - az általános formája a vétel:

végrehajtás
.
funkció FunctionName (PAR1: Par1Type; par2: Par2Type;.): ReturnType; stdcall; külső 'DLLNAME.DLL' name 'FunctionName indexe FuncIndex;






//, vagy (ha nem működik, és az eljárás):
eljárás ProcedureName (PAR1: Par1Type; par2: Par2Type;.); stdcall; külső 'DLLNAME.DLL' name 'ProcedureName indexe ProcIndex;

Itt: FunctionName (vagy ProcedureName) - függvény nevét (vagy eljárás), amelyeket használni fognak a programban;
Par1, PAR2. - a paramétereket a függvény vagy eljárás nevét;
Par1Type, Par2Type. - a paraméter típusok függvény vagy eljárás (például, Integer);
ReturnType - visszatérési típusa (funkciók esetében);
stdcall - irányelv, amely pontosan meg kell egyezniük a használt DLL magát;
külső „DLLNAME.DLL” - direktíva meghatározza a nevét egy külső DLL, amely importálható a függvény vagy eljárás (ebben az esetben - DLLNAME.DLL);
Íme „FunctionName” ( „ProcedureName”) - egy irányelv, amely meghatározza a pontos neve a funkciót a legtöbb DLL. Ez egy nem kötelező direktíva, amely lehetővé teszi, hogy a program funkció, amelynek neve más, mint a valódi (ami azt a könyvtárban);
index FunctionIndex (ProcedureIndex) - irányelv, jelezve a sorozatszámot vagy egy funkciót egy DLL eljárást. Ez is egy nem kötelező direktíva.

2 módszer. Dinamikus DLL betöltése. Ez sokkal bonyolultabb, de elegánsabb módszer. Ő meg van fosztva a hiánya az első módszer. Az egyetlen dolog, ami kellemetlen - az összeg a kódot végrehajtásához szükséges ezt a módszert, a nehézség az, hogy a funkciója DLL látható.END_BOLD importált csak ennek DLL betöltődik és a memóriában tárolt. A példát alább találhatók, és még - rövid leírása ezt a módszert használják WinAPI funkciók:

LoadLibrary (LibFileName: PChar) - LibFileName megtölteni az említett könyvtárak a memóriába. A sikeres befejezése, a függvény egy fogantyút (THandle) DLL a memóriában.
GetProcAddress (Modul: THandle; ProcName: PChar) - szól a címe funkciót a könyvtárban. A sikeres befejezése, a függvény egy fogantyút (TFarProc) függvények a betöltött DLL.
FreeLibrary (LibModule: THandle) - LibModule érvényteleníti és felszabadítja a társított memória. Meg kell jegyezni, hogy miután megadta ezt az eljárást, a könyvtár funkció nem áll rendelkezésre.

Gyakorlat és példák

Nos, most itt az ideje, hogy kapsz egy pár példát a fenti módszerek és technikák:

1. példa kötődését egy DLL programot

Ha azt szeretnénk, hogy helyét a DLL modeless formában van, akkor szükséges, hogy a két funkció - nyitó és záró penész. Ebben az esetben meg kell emlékezni, hogy DLL fogantyú ebben a formában.

Itt nem fogunk részletesen megvitassák a dugó, mert Már fenti példák segít, hogy könnyen megértsék a oroszlánrészét DLL programozás. Idézzük csak fel, hogy a dugó - egy plug-in, amely kibővíti a képességeit. Ebben az esetben a program szükségszerűen magában foglalja a jelenléte az ilyen kiegészítőket, és lehetővé teszi számukra, hogy végezzen a feladatát.




Kapcsolódó cikkek