Dinamines bibliotekos (DLL) - PowerPoint PPT Presentation

About This Presentation
Title:

Dinamines bibliotekos (DLL)

Description:

Dinamin s bibliotekos (DLL) DLL bibliotekos Dinamin s bibliotekos yra svarbi str kt rin MS Windows komponent . Ji leid ia sukompiliuoti kodo fragmentus ... – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 13
Provided by: Just2173
Category:

less

Transcript and Presenter's Notes

Title: Dinamines bibliotekos (DLL)


1
Dinamines bibliotekos (DLL)
2
DLL bibliotekos
  • Dinamines bibliotekos yra svarbi strukturine MS
    Windows komponente. Ji leidžia sukompiliuoti kodo
    fragmentus i viena biblioteka, panaudojama
    daugelio programu. Skirtumas tarp DLL ir statines
    bibliotekos yra toks, kad DLLas nera vykdomasis
    failas. Jis lieka atskiru moduliu. Tai leidžia
    vykdomuosius failus išlaikyti palyginti mažo
    dydžio.
  • DLL modulio kurimas priklauso nuo
    kompiliatoriaus, taciau pats programavimas yra
    universalus

3
_declspec
  • Tai raktažodis, kuris nera ANSI C standarto
    dalis, bet dauguma kompiliatoriu ji supranta.
    _declspec leidžia nurodyti ivairias
    nestandartines parinktis, kurios apsprendžia
    programos veikimo buda. 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 buti nurodytas tiek
    funkcijos prototipe, tiek jos apraše.

5
dllimport
  • Noredami pasinaudoti tokia funkcija ja turime
    importuoti i savo programa. Tam reikia susieti
    programa su biblioteka ir programoje apibrežti
    funkcijos prototipa naudojanti raktažodžiu
    dllimport

6
Programavimo gudrybes
  • Butu paprasciau, jei užtektu tik vieno
    raktažodžio ar ne?

7
DllMain
  • Kai Windowsai susieja DLLa su programa, buna
    kvieciama bibliotekos DllMain funkcija
  • APIENTRY raktažodis naudojamas Windowsu
    viduje, todel apie ji galime pamiršti
  • hInstance galime naudoti, galime ir ne. Šis
    kintamasis skirtas bibliotekai.

8
  • reason gali igyti viena iš keturiu reikšmiu
  • DllMain funkcija turi gražinti TRUE, jei
    biblioteka ikelta sekmingai, ir FALSE, jei ivyko
    klaida

Reikšme Kam skirta
DLL_PROCESS_ATTACH Nauja programa susisiejo su biblioteka pirma karta
DLL_PROCESS_DETACH Programa atsisiejo nuo bibliotekos
DLL_THREAD_ATTACH Programos gija susisiejo su biblioteka
DLL_THREAD_DETACH Programos gija atsisiejo nuo bibliotekos
9
Funkcijos šablonas
10
Susiejant DLL
  • Statinis susiejimas kompiliatorius sugeneruos
    du failus DLL ir LIB. LIB failas veikia kaip
    maža statine biblioteka nurodo saistyklei
    (linker) statiškai susisieti su nurodytu DLL
    failu.
  • Dinaminis susiejimas tikroji biblioteku galia
    yra programos gebejimas darbo metu ja isikelti.
    Tai esminis mechanizmas programu kurios leidžia
    papildinius(plugin) ir pletinius (extension).

11
Kaip veikia dinamine sasaja?
  • Iškvieciame biblioteka funkcijos LoadLibrary
    pagalba ir ir perduodame identifikatoriu vienai
    iš galimu funkciju. Jei biblioteka nera
    šakniniame kataloge, reikia nurodyti kur ja rasti
    funkcijos SetDllDirectory pagalba.
  • HMODULE yra bibliotekos identifikatorius (HANDLE)

12
Ka galime daryti?
  • GetProcAddress gražina funkcijos rodykle i
    funkcija bibliotekoje
  • LoadResource nuskaito DLLo išteklius
  • FreeLibrary pašalina biblioteka pagal nurodyta
    identifikatoriu iš atminties
Write a Comment
User Comments (0)
About PowerShow.com