Работа с библиотеками динамической компоновки (DLL)
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат орган, диплом
Добавил(а) на сайт: Igoshin.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9
// Insert this DLL into the resource chain
new CDynLinkLibrary(MyExtDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACED("MYEXT.DLL Terminating!n") ;
}
return 1; // ok
}
Самой важной частью этой функции является вызов AfxInitExtensionModule. Это инициализация динамической библиотеки, позволяющая ей корректно работать в составе структуры MFC. Аргументами данной функции являются передаваемый в DllMain дескриптор библиотеки DLL и структура AFX_EXTENSION_MODULE, содержащая информацию о подключаемой к MFC динамической библиотеке.
Нет необходимости инициализировать структуру AFX_EXTENSION_MODULE явно. Однако объявить ее нужно обязательно. Инициализацией же займется конструктор CDynLinkLibrary. В DLL необходимо создать класс CDynLinkLibrary. Его конструктор не только будет инициализировать структуру AFX_EXTENSION_MODULE, но и добавит новую библиотеку в список DLL, с которыми может работать MFC.
Загрузка динамических расширений MFC
Начиная с версии 4.0 MFC позволяет динамически загружать и выгружать DLL, в том числе и расширения. Для корректного выполнения этих операций над создаваемой DLL в ее функцию DllMain в момент отключения от процесса необходимо добавить вызов AfxTermExtensionModule. Последней функции в качестве параметра передается уже использовавшаяся выше структура AFX_EXTENSION_MODULE. Для этого в текст DllMain нужно добавить следующие строки.
if(dwReason == DLL_PROCESS_DETACH)
{
AfxTermExtensionModule(MyExtDLL);
}
Кроме того, следует помнить, что новая библиотека DLL является динамическим расширением и должна загружаться и выгружаться динамически, с помощью функций AfxLoadLibrary и AfxFreeLibrary,а не LoadLibrary и FreeLibrary.
Экспортирование функций из динамических расширений
Рассмотрим теперь, как осуществляется экспортирование в приложение функций и классов из динамического расширения. Хотя добавить в DEF-файл все расширенные имена можно и вручную, лучше использовать модификаторы для объявлений экспортируемых классов и функций, такие как AFX_EXT_CLASS и AFX_EXT_API,например:
class AFX_EXT_CLASS CMyClass : public CObject
(
// Your class declaration
}
void AFX_EXT_API MyFunc() ;
Скачали данный реферат: Кочерёжкин, Fedosija, Jemilij, Борков, Kuz'mich, Ювеналий, Францев.
Последние просмотренные рефераты на тему: реферат на тему понятие, человек изложение, методы дипломной работы, реферат религия.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9