1 / 12

Dinaminės bibliotekos (DLL)

Dinaminės bibliotekos (DLL). DLL bibliotekos.

levia
Download Presentation

Dinaminės bibliotekos (DLL)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dinaminės bibliotekos (DLL)

  2. DLL bibliotekos • Dinaminės bibliotekos yra svarbi strūktūrinė MS Windows komponentė. Ji leidžia sukompiliuoti kodo fragmentus į vieną biblioteką, panaudojamą daugelio programų. Skirtumas tarp DLL ir statinės bibliotekos yra toks, kad DLL’as nėra vykdomasis failas. Jis lieka atskiru moduliu. Tai leidžia vykdomuosius failus išlaikyti palyginti mažo dydžio. • DLL modulio kūrimas priklauso nuo kompiliatoriaus, tačiau pats programavimas yra universalus

  3. _declspec • Tai raktažodis, kuris nėra ANSI C standarto dalis, bet dauguma kompiliatorių jį supranta. _declspec leidžia nurodyti įvairias nestandartines parinktis, kurios apsprendžia programos veikimo būdą. Aptarsime dvi pagrindines nuostatas: • _declspec(dllexport) • _declspec(dllimport)

  4. dllexport • Šis raktažodis nurodo funkcijas, kurios bus prieinamos kitoms programoms. Priešingu atveju funkcijos bus naudojamos tik bibliotekos viduje. Šis identifikatorius turi būti nurodytas tiek funkcijos prototipe, tiek jos apraše.

  5. dllimport • Norėdami pasinaudoti tokia funkcija ją turime importuoti į savo programą. Tam reikia susieti programą su biblioteka ir programoje apibrėžti funkcijos prototipą naudojanti raktažodžiu dllimport:

  6. Programavimo gudrybės Būtų paprasčiau, jei užtektų tik vieno raktažodžio ar ne?

  7. DllMain • Kai Windows’ai susieja DLL’ą su programa, būna kviečiama bibliotekos DllMain funkciją: • APIENTRY – raktažodis naudojamas Windows’ų viduje, todėl apie jį galime pamiršti • hInstance – galime naudoti, galime ir ne. Šis kintamasis skirtas bibliotekai.

  8. reason gali įgyti vieną iš keturių reikšmių: DllMain funkcija turi grąžinti TRUE, jei biblioteka įkelta sėkmingai, ir FALSE, jei įvyko klaida

  9. Funkcijos šablonas

  10. Susiejant DLL • Statinis susiejimas – kompiliatorius sugeneruos du failus: DLL ir LIB. LIB failas veikia kaip maža statinė biblioteka nurodo saistyklei (linker) statiškai susisieti su nurodytu DLL failu. • Dinaminis susiejimas – tikroji bibliotekų galia yra programos gebėjimas darbo metu ją įsikelti. Tai esminis mechanizmas programų kurios leidžia papildinius(plugin) ir plėtinius (extension).

  11. Kaip veikia dinaminė sąsaja? • Iškviečiame biblioteką funkcijos LoadLibrary pagalba ir ir perduodame identifikatorių vienai iš galimų funkcijų. Jei biblioteka nėra šakniniame kataloge, reikia nurodyti kur ją rasti funkcijos SetDllDirectory pagalba. • HMODULE yra bibliotekos identifikatorius (HANDLE)

  12. Ką galime daryti? • GetProcAddress– grąžina funkcijos rodyklę į funkciją bibliotekoje • LoadResource– nuskaito DLL’o išteklius • FreeLibrary– pašalina biblioteką pagal nurodytą identifikatorių iš atminties

More Related