Co to jest biblioteka DLL dynamiczna i statyczna, program biblioteki DLL Delphi

Co to jest biblioteka DLL?

DLL (Dynamic Link Library) - Wykonywalny moduł programu (pod program), pełniący określone funkcje. Biblioteki DLL są powszechnie wykorzystywane w systemie Windows. Nie są one wywoływane bezpośrednio przez użytkowników, lecz przez aktualnie uruchomione programy (program). Biblioteka DLL rozszerza funkcjonalność programu. Mogą one być dość proste - tak, jak biblioteka pozwalająca narysować trójwymiarową ramkę wokół okna dialogowego (CTL3DV2.DLL) lub bardzo złożone, jak na przykład w pełni rozbudowany interpreter języka Visual Basic (VBRUN400.DLL).
Biblioteka DLL projektowana jest zazwyczaj w ten sposób, żeby z zawartej w niej funkcji mogło korzystać kilka programów naraz (np. kod wielobieżny). System Windows zawiera wiele bibliotek DLL wykorzystywanych przez aplikację (wystarczy poszukać w folderze \WINDOWS\SYSTEM plików z rozszerzeniami .DLL). Aplikacje mogą też mieć własne biblioteki, przechowywane w folderze instalacyjnym danego programu lub w folderze \WINDOWS\SYSTEM.
W systemie DOS nigdy nie istniał żaden oficjalny mechanizm pozwalający na dynamiczne łączenie (dynamiczna DLL) i współdzielenie zasobów w czasie rzeczywistym. Co prawda tworzono w tym celu programy ISR i TSR, ale takie działania nie były nigdy popierane przez Microsoft i często doprowadzały do konfliktów programowych. Niestety również w świecie bibliotek DLL pojawiają się konflikty.


Tworzymy komplet bibliotek DLL (statyczna DLL i dynamiczna) w Delphi 2010.



Opis:
1. DllF - program z którego uruchamiamy wszystkie 3 bliblioteki DLL.
  a) - funkcja SayHello, pobrana statycznie z pierwszej biblioteki DLL o nazwie DllFull.dll
  b) - funkcja DoSomethingReallyCool, pobierana statycznie również z pierwszej biblioteki DLL o nazwie DllFull.dll
  c) - funkcja ShowForm, pobrana w sposób statyczny z trzeciej biblioteki DLL o nazwie DllFull3.dll

  d)

- Na skutek naciśnięcia przycisku BitBtn3, ładuje się DYNAMICZNIE biblioteka DllFull2.dll (DLL dynamiczna) z funkcją SayHelloDyn
  - - załadowanie biblioteki dynamicznie
  - - sprawdzenie czy biblioteka się załadowała
  - - pobranie z załadowanej biblioteki funkcji SayHelloDyn
  - - jeśli załadowane wykonaj funkcje
  - - zwolni bibliotekę załadowaną dynamicznie z pamięci.


Przykładowa biblioteka DLL jej konstrukcja, jest przedstawiona poniżej - biblioteka DllFull2.dll:

Każda biblioteka DLL zaczyna się od:
library i jej nazwy.

Na samym końcu mamy:
exports, w którym podajemy jakie funkcje biblioteka DLL ma przekazać na zewnątrz do innych programów.


Różnica między biblioteką ładowaną w sposób statyczny (statyczna DLL) a dynamiczny (dynamiczna DLL), polega na tym, że biblioteka DLL dynamiczna ładujemy do pamięci program-u wtedy gdy zaistnieje taka potrzeba, zaś statyczna DLL jest już ładowana przy kompilacji program-u!



Wszystkich zainteresowanych chcących pogłębić wiedzę o bibliotekach DLL, np. o stworzenie jednej biblioteki DLL, która jest wykorzystywana zarówno przez Delphi jak i C++ Builder zapraszam do:

Międzyplatformowe dynamiczne biblioteki DLL



Pliki do pobrania:
1. Źródła i exe:
-pobierz
2. EXE:
-pobierz