Jak utworzyć bibliotekę DLL (wprowadzenie)      Strona 1 z 7        Dalej
w oparciu o materiały ze stron The Bits

       Spójżmy na zagadnienie z tzw. "lotu ptaka"...

      Co właściwie oznacza DLL? Skrót ten oznacza Dynamic Link Library, czyli dynamicznie dołączaną bibliotekę. Tradycyjne programy stanowią w pełni zamkniętą całość. Wszystko co program potrzebuje jest mu znane, zanim zostanie w nim użyte. Fazę łączenia, która integruje ze sobą komponenty w programie, nazywa się wczesnym wiązaniem. Kiedy używasz w swoim programie bibiloteki DLL, wykorzystujesz koncepcję tzw. późnego wiązania. Dla lepszego zrozumienia posłużę się takim wędkarskim porównaniem: wczesne wiązanie jest jakby haczykiem z zawieszoną na nim rybą; zas późne wiązanie można przyrównać do haczyka z przynętą, na którą to dopiero później złapiemy rybę.

      Jeżeli twój program odwołuje się do funkcji nazwanej np. VerNo, a jej kod znajduje się w bibliotece dynamicznej, to do momentu pierwszego jej wywołania, twoj program bedzie zawierał pewien nieokreślony wirtualny adres do takiej funkcji. Kiedy już raz zostanie utworzone połączenie do VerNo (pierwsze wywołanie), ten pierwotnie nieznany wirtualny adres zmienia się i odzwierciedla wtedy faktyczny adres miejsca występowania funkcji w bibliotece.

      Najtrudniejszą częścią tworzenia DLL-i jest ich zdefiniowanie. Jak już przez to przejdziesz, to później kolejne funkcje można bardzo szybko w bibliotece umieszczać. Podobnie jak przy programach, tak i przy projektowaniu DLL-a dobrze jest stosować pewne reguły. Niektóre z funkcji są "widoczne na zewnatrz" (eksportowane) a inne z kolei są używane tylko wewnątrz biblioteki (wewnętrzne). Pomimo tego, że wolno Ci eksportować tak dużo jak tylko chcesz, powinieneś unikać eksportowania wszystkich funkcji. Kolejną rzeczą której warto unikać, jest umieszczanie wszystkich funkcji w jednym DLL-u. Osobiście uważam, że rozsądnie jest umieszczać pokrewne sobie funkcje w osobnych bibliotekach. Np. funkcje bazujące na operacjach finansowych umieść w jednym DLL-u, a np. te operujące na tekście (stringi) - w drugim, itd. Jak mówię, nie jest to obowiązkiem, ale na pewno zwiększa czytelność bibliotek.

      Spore korzyści z używania DLL-i na pewno dostrzeżesz wtedy, kiedy rożne twoje programy będą korzystały z tej samej (lub wielu) funkcji. Jeśli owe funkcje będą miały drobne błędy, które ujawnią sie np. po napisaniu wielu programów korzystających z tych funkcji, to w przypadku nie używania DLL-i, trzeba będzie nanieść poprawki do każdego programu z osobna oraz przekompilować każdy z osobna. Jeśli zaś funkcje będą w bibliotece, to wystarczy poprawić je w DLL-u i poprawioną wersję biblioteki skopiować do odpowiednich programów.

      W rzeczywistości, Windows bardzo często używa DLL-i. W tej chwili na przykład mój laptop ma 853 DLL-e, z których spora część należy do Windows. Gdyby Windows nie posiadał bibliotek dynamicznych, to jest dość prawdopodobne że musiałbyś przekompilowywać na nowo każdy ze swoich programów, po upgrade'owaniu systemu. To, że nie musisz tego robić, jest po cześci zasługą bibliotek.

      Biblioteki dynamiczne przeważnie pozostają niewidoczne w czasie wykonywania się programu (runtime). Aplikacje używają ich głównie do wykonania specyficznej "nie-wizualnej" funkcji. Wraz z nadejściem technologii RAD, możliwe stało się wyposarzenie DLL-i w różne obiekty graficzne. Dla przykładu takim obiektem moze być formularz z prośbą o podanie hasła.

      Moim zamiarem jest przeprowadzenie cię przez dość prosty etap tworzenia biblioteki DLL, oraz zaprojektowania jej tak, aby zawierała zarówno wizualne jak i nie-wizualne oraz eksportowane jak i wewnętrzne funkcje. Pod koniec dowiesz się jak załadować bibliotekę do programu. Możesz być pewny, że wszystkie etapy są w gruncie rzeczy łatwe do przyswojenia, jednak jak w każdej dziedzinie, i tutaj żeby to opanować, potrzebna jest PRAKTYKA! Tak więc nie ma się czego obawiać - wystarczy trochę poeksperymentować, a wszystko stanie się jasne.

Uwaga: Autorzy oraz The Bits, nie ponoszą odpowiedzialności za ewentualne szkody wynikłe z postępowania według zasad tego samouczka.
©1998 Peter Hamilton-Scott, Dallen Masters, & Simon Rutley-Frayne. 1999 Allan Carlton & Will Green. 
Tłumaczenie:  Maciek Durman

1  2  3  4  5  6  7