Создание DLL модуля, позволяющего находить среднее 4 чисел

Страницы работы

Содержание работы

Лабораторная работа №5

Тема: Создание модуля DLL.

 
 



Лабораторная работа №5

Создание модуля DLL.

Задание: Создать и использовать динамически загружаемую библиотеку (DLL). Для проверки созданного DLL - модуля создать тестовое приложение. 

Техническое задание: Создать DLL модуль позволяющий находить среднее 4 чисел. Создать простое тестовое для DLL модуля, приложение используя диалоговое окно.

Краткие теоретические сведения:

Мастер MFC AppWizard (DLL) – собирает множество функций в DLL-модуль, чтобы все они использовали классы из MFC. Если же функции не используют MFC лучше пользоваться вариантом Win32 Dinamic - Link  Library (получаем пустой файл проекта).

Динамически связываемые библиотеки (DLL-модули) являются базовыми компонентами операционной системы Windows, где используются модули Kernel32.dll, User32. dll и Gdi32.dll для выполнения своих функций.

Если собрать несколько функций в один DLL-модуль, то данный модуль будет экспортировать эти функции для использования в других программах. И довольно часто одни DLL-модули для выполнения своей работы нуждаются в импорте функций из других DLL-модулей.

Определения экспортируемой функции:

__ declspec(dllexport) тип_Данных int идентификтор_Переменной;

//Для переменных.

__ declspec(dllexport) возвращаемый_Тип имя_Функции ([список_Аргументов]);

//Для функций.

Определения импортирования функции:

__ declspec(dllimport) тип_Данных int идентификатор_Переменной;

//Для переменных.

__declspec(dllimport) возвращаемый_Тип имя_Функции ([список_Аргументов]);

//Для функций.

Большинство DLL-модулей загружаются неявно, и их загрузкой и выгрузкой управляет Windows. Но в процессе разработки приложения в качестве временного хранилища для этой цели можно использовать папку выделяемых файлов проекта. Однако нужно следить за тем, чтобы в итоге в разных папках, включая папки Windows, Windows\System и папку проекта, не оказались разные версии одного и того же DLL-модуля.

При компиляции DLL-модуля транслятор VC++ создает файл с расширением *.LIB, который используется для разрешения адресов загрузки в DLL-модуле и содержит полное имя динамически подключаемой библиотеки, тогда как файл заголовка содержит его описание.

Для этого необходимо – подключить файл заголовка к исходному файлу, использующему функции из модуля DLL, и указать имя файла библиотеки (*.LIB) в поле Object/librarymodules на вкладке Link  диалогового окна  ProjectSettings.

рис 1 Добавление в установки проекта файла библиотеки (*.LIB)

Внешний вид тестового приложения.

Тестовое приложение для проверки DLL-модуля содержит лишь такой набор функций, которого достаточно, чтобы протестировать модуль.

На этом этапе проверяем только функциональные возможности модуля.

рис 2 Тестовое приложение.

Код DLL модуля представлен в приложении: Листинг 1.

Код для проверки DLL модуля представлен в приложении: Листинг 2.


Приложение

Листинг 1

extern "C"__declspec(dllexport) double MyFunction(double d,double c, double b, double a)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

// normal function body here

double sumsr;

sumsr=(d+c+b+a)/4.;

return sumsr;

}

Листинг 2

Использование функции из DLL при нажатии на кнопку “Вычислить среднее”

void CTestDlg::OnButton1()

{

UpdateData(TRUE);

m_Aver=MyFunction(m_D,m_C,m_B, m_A);

UpdateData(FALSE);

}

Инициализация функции - MyFunction в заголовочном файле тестового приложения.

extern "C"__declspec(dllimport) double MyFunction(double d,double c, double b, double a);


Литература

1. Дэвис Чепмен “Освой самостоятельно. Visual C++.NET за 21 день”. Издательский дом «Вильямс» Москва * Санкт-Петербург * Киев. 2002г.  

2. Кэйт Грегори “Использование Visual C++ 6.0” Издательский дом «Вильямс» Москва * Санкт-Петербург * Киев. 2002г.  

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
86 Kb
Скачали:
0