
Что такое DLL и зачем они нужны
Xakep, номер #035, стр. 035-074-2
Хотя память и дешевая, проги от этого меньше не стали. Если посмотреть на запросы той же Windows2000, то сразу хочется взять зонтик, вставить его Биллу в задний проход и раскрыть. Это что он там такое натворил, что Windows 2000 Server просит для нормальной работы минимум 256 мегов? А если учесть, что некоторые чипсеты не поддерживают памяти более 512 мегов, то о нормальной одновременной работе Windows 2000 Server + 3D Studio Max + MPEG4 можно забыть. Они всю память сожрут как термиты за пять сек.
РЕШЕНИЕ 2
И вот тут было найдено вполне солидное решение: не стыковать модули с основной прогой, а сохранять их в отдельный файл и пусть любая прога загружает его по мере надобности. Ляпнул, отвечай за базар. Так появились библиотеки DLL, что означает Dynamic Link Library. Это библиотеки, которые подключаются к программе динамически. В них можно хранить исполняемый код в виде процедур или функций, ресурсы проги, графику или даже видеоролики.
Вот так. Теперь прога не увеличивалась на размер модуля при компиляции, а просто загружала код из DLL файла в память и использовала его. Если одна прога уже загрузила DLL, то следующая прога не будет уже этого делать. Она воспользуется уже загруженной версией. Таким образом, экономится не только диск, но и оперативка, которой, как и денег, много не бывает.
К СВЕТЛОМУ БУДУЩЕМУ
Сейчас уже DLL - это не просто динамически подгружаемая библиотека. Ты, наверно, уже не раз слышал про компоненты ActiveX. Они также могут быть выполнены в виде ocx или dll файлов. Да оно и понятно, ActiveX используются сейчас достаточно много и весят они в несколько раз больше, чем самая большая DLL библиотека. Так что единственный и нормальный выход экономить место винта и памяти - это засунуть ActiveX в динамически подгружаемую библиотеку. Хотя это уже не та DLL, но все же работает по тем же принципам.
ЗАГРУЗКА БИБЛИОТЕК
У динамических библиотек есть единственный недостаток - на загрузку тратится лишнее время. Зато если библиотека уже загружена другой прогой, то она появляется намного быстрей. Не веришь? Отложи сейчас журнал и возьми в руки секундомер. Теперь запусти Word или Excel. Засеки, сколько времени будет проходить загрузка. Теперь закрой прогу и запусти ее снова. Она появится на экране практически моментально. Это потому, что после выхода из проги DLL-файл не выгружается из памяти. Это происходит только тогда, когда окнам не хватает памяти и ни одна из прог не использует в данный момент эту библиотеку.
А теперь представь себе, что такое Word .... Представил? Это и текстовый редактор, и проверка орфографии, и построитель диаграмм, редактор формул и куча еще всякой всячины. Представь себе, что было бы, если все это засунуть в один файл? Нет, ты это не можешь представить. Это был бы один запускной файл размером в 30-50 мегов.
А теперь вспомни, что я тебе сегодня говорил: перед запуском прога загружается в память. Представляешь теперь, сколько бы грузился Word? А сколько памяти он сожрал бы? А тебе ведь и половина его возможностей абсолютно не нужна. И зачем же их грузить в память?