Динамическая загрузка DLL |
![]() |
![]() |
Статьи |
В этой статье подробно рассмотрена динамическая загрузка DLL, удаление ее из памяти, когда мы закончим с ней работать. Выгода от динамической загрузки DLLЕсть много причин для использования этого пути использования DLL. Динамически загружая DLL, Вы решаете во время выполнения какую DLL использовать. Это означает, что Вы можете придавать Вашей программе различные функциональные возможности, в зависимости от того, какая DLL присутствует в памяти. Использование кодаЭтот пример будет использовать DLL, которая создана в статье Добавление форм в DLL, эта DLL экспортитует одну функцию и одну процедуру, которые объявлены как:
Чтобы вызвать их из нашего приложения, мы должны объявить два новых типа, которые соответствуют этим DLL, подобно этому:
Теперь мы должны создать экземпляры этих двух типов, которые мы будем делать в части private нашего главного класса.
Сейчас вызов любой из этих двух функций закончился бы нарушением доступа (Access Violation), так как они не указывают ни на что. Поэтому в следующем шаге мы должны загрузить DLL и сделать два входа в соответствующие функции в DLL, так:
Все, что мы здесь делаем - загружаем DLL в память (LoadLibrary), затем получаем адреса этих двух функций (GetProcAddress), которые мы будем вызывать. Теперь мы можем вызвать ShowForm и ShowFormModal, как будто это стандартные процедуры. ОчисткаКогда мы закончили использовать DLL, мы должны удалить ее из памяти:
Когда DLL будет выгружена, Вы должны удостовериться, что не будете вызывать любую из этих функций, иначе будет ошибка Access Violation! ЗаключениеКак можно заметить в этом примере, динамеческая загрузка DLL довольно проста. |