Utilizarea dll în program în Visual C


Versiune text: 2.0

Mulți oameni știu că există două moduri de bază pentru a conecta DLL la program - explicite și implicite.

Cu conexiune explicită (legarea explicit) aplicația apelează funcția LoadLibrary pentru a încărca DLL, apoi utilizați funcția GetProcAddress pentru a obține un pointer la funcția dorită (sau variabilă), și după ce a lucrat cu ei este FreeLibrary să descarce bibliotecă și părăsească resursele sale.







În Visual C ++ 6.0 are un alt mod de a conecta DLL, care combină aproape toate avantajele celor două metode discutate anterior - amânat de încărcare DLL (DLL-întârziere de sarcină). încărcare întârziată necesită sprijin din sistemul de operare (și, prin urmare, ar funcționa chiar și sub Windows 95), și este implementat printr-un linker Visual C ++ 6.0. Când leneș încărcare DLL-ul este încărcat numai atunci când aplicația accesează una dintre funcțiile conținute în acesta. Este transparent pentru programator (de exemplu, cauza LoadLibrary / GetProcAddress nu este necesar). După ce a lucrat cu funcții de bibliotecă este finalizată, acesta poate fi lăsat în memorie sau de descărcare prin intermediul funcției __FUnloadDelayLoadedDLL. Apelarea acestei funcții - singurele modificări de cod care pot fi necesare pentru a face programator (în comparație cu un DLL conexiune implicită). În cazul în care este necesar DLL nu este găsit, aplicația se blochează, dar aici situația poate fi corectată, capturare excepție folosind __try / __, cu excepția construcțiilor. După cum puteți vedea, DLL de încărcare leneș - un instrument foarte util pentru un programator.







În plus, presupunem că biblioteca de import este conținută în fișierul MyDll.lib.

conexiune implicită

Aceasta este cea mai simplă metodă de DLL la programul nostru. Tot ce avem nevoie - este de a trece la linkerul importă numele bibliotecii care a folosit-o în procesul de asamblare. Acest lucru se poate face în diverse moduri.

În primul rând, puteți adăuga direct fișier MyDll.lib la echipa de proiect prin intermediul Proiect-> Adauga la Proiect-> Fișiere. În al doilea rând, puteți specifica numele bibliotecii pentru a importa opțiuni de legare. Pentru a face acest lucru, deschideți fereastra de opțiuni de proiect (Project-> Setări.) Și se adaugă în Object / Library module file Link name MyDll.lib. În cele din urmă, puteți încorpora un link către biblioteca de import direct în codul sursă al programului. În acest scop, Directiva #pragma cheie c comentariu. În cazul nostru, este necesar să se introducă o linie în program:

Acum puteți utiliza programul toate variabilele, funcțiile și clasele conținute în DLL, ca și în cazul în care acestea au fost într-o bibliotecă statică. De exemplu: