Knihovna Dynamic Link Library (DLL) je z angličtiny přeložena jako „knihovna dynamických odkazů“. DLL je spustitelný soubor, který vykonává funkce sdílené knihovny. Prostřednictvím svého dynamického propojení poskytuje DLL způsob, jak volat funkci, která je součástí spustitelného kódu.
Samotný spustitelný funkční kód je v knihovně DLL, která obsahuje několik zkompilovaných, propojených a uložených funkcí v používaných procesech. DLL slouží ke zjednodušení procesu sdílení zdrojů a dat. Umožňuje aplikacím nainstalovaným v systému přistupovat k více obsahu jedné kopie knihovny DLL načtené do paměti současně.
Modulární kódování - předchůdce DLL
Za začátek práce na vytvoření DLL lze považovat vznik takové programovací metody, jako je modulární kódování. Najednou modulární kódování značně usnadnilo práci programátorů, což umožnilo nenapsat stejný kód pro každý nový program několikrát. Všechny jednoduché programy obsahují spoustu podobného kódu, který začali navrhovat ve formě modulů a přidávat je do nových aplikací. Na chvíli bylo modulární kódování nejjednodušším a nejúčinnějším řešením a mělo pouze jednu nevýhodu. Identické moduly přidané do programů zabíraly místo na disku, které bylo v té době vzácné.
Problém plýtvání diskovým prostorem na identických modulech byl jediný, zatímco existovaly pouze operační systémy s jedním úkolem. S příchodem multitaskingových operačních systémů, jako je Windows, nastal další problém. Nyní, když byly programy s moduly se stejným kódem spuštěny současně, začaly jej načítat do paměti RAM a „spotřebovávaly“všechny zdroje. Stojí za zmínku, že v té době byl 500 megabajtový paměťový modul největší v existenci a byl docela drahý. Ale ani maximální velikost RAM uživatele nezachránila, programy paměť RAM úplně načetly, což znemožnilo normální provoz počítače.
Vznik DLL
Bylo nalezeno slušné řešení těchto problémů, vypadalo to takto: moduly se stejným kódem se přestaly připojovat k hlavnímu programu a ukládaly je do samostatného spustitelného souboru, ke kterému mohla podle potřeby přistupovat libovolná aplikace. Právě toto řešení tvoří základ knihoven DLL, které se dynamicky propojují s jakýmkoli programem. Nyní je možné do těchto knihoven uložit spustitelný kód ve formě funkcí nebo postupů, grafiky a dokonce i videí, což umožnilo ušetřit místo na disku a prostředky RAM.
Jedinou nevýhodou knihoven dynamických odkazů je ztráta času při načítání programu. Kromě této menší nevýhody se DLL skládá pouze z výhod. Proto jsou tyto knihovny široce používány a programátoři je používají téměř v každé aplikaci.