Létrehozása és csatlakoztassa dll

Most fontolja meg, milyen szükséges DLL (Dynamic Link Library - Dinamikus Könyvtár kompanuemaya), és hogyan lehet létrehozni őket. DLL- a körzetszámot tárolt kiterjesztésű fájl .dll. A kód használható más programok, de a könyvtár posebe proramma nem. Általában akkor, dinamikus csatolású könyvtárak Nabão skompilirovannyyh funkciókat. De yutih könyvtár megvannak a maga sajátosságai, így például, ha kakkieto két vagy több Windows-programok egyidejűleg végrehajtott, és a funkciók egy DLL, a memória mindig csak egy könyvtár, ezáltal gazdaságos memória mennyisége. Betöltése a könyvtár a memóriába is lehet statikus és dinamikus.

A statikus terhelési DLL automatikusan betöltődik, amikor elindítja az alkalmazást néha használják. Az ilyen DLL tartalmaz exportált funkciók leírása, amely a fájl import könyvtár (import könyvtár fájl - .lib). Ahhoz, hogy egy statikus terhelés van a színpadon elrendezést a programot dodklyuchit .lib a DLL fájl. A C ++ Builder, ez csökkenti a felvétel a projekt .lib fájl segítségével mendzherov projekteket.

Amikor diamicheskoy terhelés tudja tölteni DLL, ha szükséges, felrakható gyerünk, ha ez szükséges. De ahhoz, hogy működjön együtt az ilyen könyvtárak nehezebb, mint a statikus. Tekintsük sozzdanie és DLL használja a statikus terhelés.

statikus terhelés

Először hozzon létre egy projektet (Fájl / Új / DLL). A projekt jön létre, amely tartalmazza a következőket:

és egy hosszú megjegyzést figyelmeztet, hogy szükség van a munka snei DLL azon képességét, hogy postvku néhány dll, ha használja a karakterlánc osztály példányok.

Exportja és importja a DLL kell használni Modi fikatory __export és __import volt. De lehet használni a C ++ Builder új kulcsszót __delspec () paraméterekkel dllexport és dllimport volt. Azt értem, hogy annak érdekében, hogy esportirovat funkció a könyvtárból Eugen egy header file leírással _delspec (dllexport) exportálni funkciók importálni jellemzői az app meg kell tenni hasonló viselkedést header fájlt, de _delspec (dllimport) leírások elég kényelmetlen. Ez a probléma könnyen megoldható: add a könyvtár header fájlt az alábbiak szerint:

Az eredeti fájl DLL írási #define BUILD_DLL helyett __declspec (dllexport) levelet DLL_EXP. A program a hozzá a következő sort #define BUILD_APP, és csak csatlakozni a fejléc DLL fájl.

Példa DLL: P.cpp fájl

Ha megnyomja a Run befejezése után az építési akkor megjelenik egy üzenet, hogy a program nem hajtható végre mozhnt (természetesen). Most írjuk a hívó. Vtomzhe katalógus sozdayde új projekt (File / New Application) formájában, tegyen egy gombot, és a felvezető OnClick esemény. A végrehajtható legyen slduyuschee:

Mint látható, úgy, hogy a DLL szüksége lehet használni a három fájlt: DLL önmagában, a fejléc és a könyvtár .lib fájlt.

dinamikus terhelés

Dinamikus betöltés sokkal nehezebb. Azonban a dinamikus terhelés csak akkor szükséges DLL (ne szükségtelen .lib vagy header fájlt, bár lehet ispolbzovat leírni az exportált függvények predpolagemogo felhasználó).

Nézzünk egy példát, hogyan kell előállítani dinamikus terhelés. Hozzon létre egy új DLL proctitises és adja meg a következő bele:

Ckompiliruyte projekt, amely azt eredményezi, hogy létre DLL.

Most hozzon létre egy hasonló projekt a viselkedés, hogy a kérelem a projekt, hogy egy statikus terhelés (egy űrlapot egy gombot, és eseménykezelő OnClick gomb) mutatja az alkalmazás kódja: (Unit11.cpp)

indul egy projekt, ha rákattint a gombra kell vydavatsya számoltak be. Most nézzük meg, hogyan működik.

Fontos tudni, hogy pontosan meghatározza az prizagruzke mestopolozhnie könyvtár (neobezatelno ugyanabban a könyvtárban, ahol az alkalmazás).