Вопросы к Поиску с Алисой
Работа библиотеки динамических библиотек DLL в Windows основана на том, что в момент выполнения программы загружается вся библиотека целиком. www.interface.ru Благодаря этому разные процессы могут пользоваться совместно одними и теми же библиотеками, находящимися в памяти. www.interface.ru
При запуске приложение пытается найти все файлы DLL, неявно подключённые к приложению, и поместить их в область оперативной памяти, занимаемую данным процессом. www.interface.ru Поиск файлов DLL операционной системой осуществляется в следующей последовательности: каталог, в котором находится ЕХЕ-файл, текущий каталог процесса, системный каталог Windows. www.interface.ru Если библиотека DLL не обнаружена, приложение выводит диалоговое окно с сообщением о её отсутствии и путях, по которым осуществлялся поиск. www.interface.ru Затем процесс отключается. www.interface.ru Если нужная библиотека найдена, она помещается в оперативную память процесса, где и остаётся до его окончания. www.interface.ru Теперь приложение может обращаться к функциям, содержащимся в DLL. www.interface.ru
При динамической загрузке DLL первое, что необходимо сделать, — это поместить модуль библиотеки в память процесса. www.interface.ru Данная операция выполняется с помощью функции ::LoadLibrary, имеющей единственный аргумент — имя загружаемого модуля. www.interface.ru Если файл обнаружен и библиотека успешно загрузилась, функция ::LoadLibrary возвращает её дескриптор, который используется для доступа к функциям библиотеки. www.interface.ru
Для каждой DLL-библиотеки система ведёт счётчик использования. frolov-lib.ru Содержимое этого счётчика увеличивается при очередной загрузке библиотеки в память и уменьшается при освобождении библиотеки. frolov-lib.ru Когда содержимое счётчика использования DLL-библиотеки станет равным нулю, библиотека будет выгружена из памяти. frolov-lib.ru