Creați și conectați dll

Vom lua în considerare acum ce este nevoie DLL (Dynamic Link Library - Dinamic Biblioteca kompanuemaya) și cum să le creați. DLL- este prefixul stocate într-un fișier cu extensia .dll. Codul poate fi folosit de alte programe, dar proramma biblioteca posebe nu este. În general, atunci, bibliotecile de legături dinamice sunt funcții Nabão skompilirovannyyh. Dar yutih biblioteca are propriile sale caracteristici, astfel încât, de exemplu, în cazul în care kakkieto două sau mai multe programe de Windows executate și de a folosi funcțiile într-un DLL simultan, memoria va fi întotdeauna doar o singură bibliotecă, oferind astfel o cantitate economică de memorie. Încărcarea bibliotecii în memorie poate fi static și dinamic.







Cu DLL de încărcare statică este încărcat automat atunci când porniți aplicația este folosită uneori. O astfel de DLL conține funcții exportate, din care o descriere este în biblioteca de import fișier (import fișier bibliotecă - .lib). Pentru a utiliza o sarcină statică aveți pe aspectul etapă la programul dodklyuchit .lib fișierul DLL. În C ++ Builder, acest lucru reduce la includerea în proiect .lib fișier prin proiecte mendzherov.

Când diamicheskoy sarcină puteți încărca DLL, dacă este necesar, descarcă veni atunci când nu este necesar. Dar, pentru a lucra cu astfel de biblioteci mai greu decât statice. Luați în considerare sozzdanie și DLL utilizați sarcina statică.

încărcare statică

În primul rând a crea un proiect (File / New / DLL). proiectul va fi creat, care conține următoarele:

și un comentariu lung vă avertizează că aveți nevoie pentru munca SNEI capacitatea DLL dvs. de a oferi postvku unele dll dacă utilizați instanțele clasei String.







Pentru exporturile și importurile din DLL trebuie să utilizeze Modi __export fikatory și __import respectiv. Dar pot fi folosite în C ++ Builder un nou cuvânt cheie __delspec () cu parametrii dllexport și DllImport respectiv. Înțelegeți că, pentru a esportirovat funcție din biblioteca Eugen un fișier antet cu descrieri _delspec (dllexport) pentru a exporta funcții pentru a importa caracteristici în aplicația pe care va trebui să pună similare în comportament la fișierul antet, dar cu _delspec (DllImport), descrieri care destul de incomod. Această problemă este rezolvată ușor: adăugați biblioteca la fișierul antet, după cum urmează:

Original fișier DLL scrie #define BUILD_DLL, în loc __declspec (dllexport) scrie DLL_EXP. Când scrieți programul adăugați linia #define BUILD_APP, și conectați doar fișierul header DLL.

Exemplu DLL: fișier P.cpp

Dacă apăsați Executare după finalizarea construcției va vedea un mesaj care programul nu este mozhnt fi executat (desigur). Acum scrie apelantului. Catalog de Vtomzhe sozdayde nou proiect (File / New Application), sub formă, așezați un singur buton și un eveniment OnClick handler. executabil dvs. ar trebui să fie slduyuschee:

După cum puteți vedea, astfel încât DLL-ul ar putea avea nevoie de a utiliza cele trei fișiere: DLL în sine, antet și biblioteca lib fișier.

încărcare dinamică

încărcare dinamică este mult mai dificil. Cu toate acestea, pentru încărcarea dinamică necesară numai DLL în sine (nu orice lib sau antet fișier inutile, deși poate fi ispolbzovat pentru a descrie funcțiile exportate pentru utilizator predpolagemogo).

Să ne uităm la un exemplu de cum să producă încărcare dinamică. Creați un nou proctita DLL și introduceți următoarele în ea:

Proiectul Ckompiliruyte, ceea ce va duce la DLL stabilite.

Acum, creați un proiect similar în comportament la proiectul de aplicare pentru a utiliza o sarcină statică (un formular cu un buton buton și evenimentul handler OnClick) de mai jos arată codul aplicației: (Unit11.cpp)

începe un proiect, atunci când faceți clic pe butonul ar trebui să vydavatsya raportate. Acum ne uităm la modul în care funcționează.

Rețineți că puteți specifica exact biblioteca prizagruzke mestopolozhnie (neobezatelno în același director în cazul în care cererea).