Dynamic Link Library (DLL) jest tłumaczona z języka angielskiego jako „biblioteka z łączem dynamicznym”. DLL to plik wykonywalny, który pełni funkcje biblioteki współdzielonej. Poprzez dynamiczne łączenie biblioteka DLL umożliwia wywołanie funkcji, która jest częścią kodu wykonywalnego.
Sam wykonywalny kod funkcji znajduje się w bibliotece DLL, która zawiera kilka skompilowanych, połączonych i przechowywanych funkcji w używanych procesach. DLL służy do uproszczenia procesu udostępniania źródeł i danych. Umożliwia aplikacjom zainstalowanym w systemie dostęp do wielu zawartości jednej kopii biblioteki DLL załadowanej do pamięci w tym samym czasie.
Kodowanie modułowe - przodek bibliotek DLL
Rozpoczęcie prac nad stworzeniem biblioteki DLL można uznać za pojawienie się takiej metody programowania jak kodowanie modułowe. Swego czasu kodowanie modułowe znacznie ułatwiało pracę programistom, dzięki czemu możliwe było nie pisanie tego samego kodu dla każdego nowego programu kilka razy. Wszystkie proste programy zawierają dużo podobnego kodu, który zaczęto projektować w postaci modułów, dodając je do nowych aplikacji. Przez pewien czas kodowanie modułowe było najprostszym i najskuteczniejszym rozwiązaniem i miało tylko jedną wadę. Identyczne moduły dodawane do programów zajmowały miejsce na dysku, którego w tamtych czasach było mało.
Problem marnowania miejsca na dysku na identycznych modułach był jedynym, podczas gdy istniały tylko jednozadaniowe systemy operacyjne. Wraz z pojawieniem się wielozadaniowych systemów operacyjnych, takich jak Windows, pojawił się kolejny problem. Teraz programy z modułami z tym samym kodem, uruchomione jednocześnie, zaczęły ładować go do pamięci RAM, „zjadając” wszystkie zasoby. Warto zauważyć, że w tamtych czasach moduł pamięci o pojemności 500 megabajtów był największym z istniejących i był dość drogi. Ale nawet maksymalny rozmiar pamięci RAM nie oszczędzał użytkowników, programy ładowały pamięć RAM całkowicie, uniemożliwiając normalne działanie komputera.
Pojawienie się bibliotek DLL
Znaleziono przyzwoite rozwiązanie tych problemów, wyglądało to tak: moduły z tym samym kodem przestały się dokować z głównym programem, zapisując je w osobnym pliku wykonywalnym, do którego w razie potrzeby mogła mieć dostęp dowolna aplikacja. To właśnie to rozwiązanie stanowi podstawę bibliotek DLL, które dynamicznie łączą się z dowolnym programem. Teraz możliwe jest przechowywanie w tych bibliotekach kodu wykonywalnego w postaci funkcji lub procedur, grafiki, a nawet filmów, co pozwoliło zaoszczędzić miejsce na dysku i zasoby pamięci RAM.
Jedyną wadą bibliotek dołączanych dynamicznie jest strata dodatkowego czasu na ładowanie programu. Oprócz tej drobnej wady DLL ma same zalety. Dlatego biblioteki te są szeroko stosowane i wykorzystywane przez programistów w prawie każdej aplikacji.