Программа включения в DLL библиотеку функции Asc2Un

#include "EvryThng.h"

#define BUF_SIZE 256

_declspec (dllexport)

BOOL Asc2Un (LPCTSTR, LPCTSTR, BOOL);

BOOL Asc2Un (LPCTSTR fin, LPCTSTR fOut, BOOL bFaillfExists)

{

/* Функция копирования файла ASCII в Unicode на базе CopyFile. */

HANDLE hIn, hOut;

DWORD fdwOut, nIn, nOut, iCopy;

CHAR aBuffer [BUF_SIZE];

WCHAR uBuffer [BUF_SIZE];

BOOL WriteOK = TRUE;

hIn = CreateFile (fin, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

/* Определяем действие CreateFile, если выходной файл уже существует.*/

fdwOut = CREATE_NEW||CREATE_ALWAYS;

hOut = CreateFile (fOut, GENERIC_WRITE, 0, NULL,

fdwOut, FILE_ ATTRIBUTE_NORMAL, NULL);

while (ReadFile (hIn, aBuffer, BUF_SIZE, &nIn, NULL) && nIn > 0 && WriteOK)

{

for (iCopy = 0; iCopy < nIn; iCopy++)

/* Преобразование каждого символа. */

uBuffer [iCopy] = (WCHAR) aBuffer [iCopy];

WriteOK = WriteFile (hOut, uBuffer, 2 * nIn, &nOut, NULL); }

CloseHandle (hIn);

CloseHandle (hOut);

return WriteOK;

}

Перечень оборудования, аппаратного и программного обеспечения:

- персональный компьютер;

- программная среда Visual C++.NET 2003.

Порядок выполнения работы:

1. Изучить основные способы создание динамических библиотек с неявным и явным связыванием.

2. Изучить процедуру экспорта и импорта функций в динамическую библиотеку при неявном связывании.

3. Изучить функции, которые используются при явном связывании: LoadLibrary, FreeLibrary и GetProcAddress.

4. Скопировать и отладить программу с использованием библиотеки с неявным связыванием.

5. Создать.DLL модуль для функции Asc2Un, листинг которой приведен ниже основной программы.

6. Разобраться с работой основной программы и объяснить ее функционирование.

7. Подготовить отчет по выполненной работе.

Порядок выполнения программ в среде Visual C++.NET 2003:

1. Запустить Microsoft Visual Studio C++ /NET 2003.

2. Создать проект с именем Asc2Un формирования функции Asc2Un в динамическую библиотеку, используя вкладку MFC DLL. Для этого нужно в меню File выбрать New, затем Project и активировать иконку MFC DLL, в строке Nam e: набрать Asc2Un, в стоке Location: указать путь к папке, куда будет записан проект, и нажать кнопку Finish.

3. На экране должен появиться текст файла Asc2Un.cpp. Если его нет, то нужно войти в меню View и выбрать строку Solution Explorer и в папке Asc2Un найти файл Asc2Un.cpp.

4. Набрать программу функци Asc2Un и разместить в файле Asc2Un.cpp после #endif. Создать динамическую библиотеку.DLL. Для этого следует выбрать в меню Project, Propertie s вкладку C/C++, Code Generation. В окне Runtime Library выбрать Multithreaded Debug DLL.

5. Создать проект для консольного приложения Win32 Console Project для основной программы и набрать основную программу.

6. При создании.exe файла основной программы в меню Projec t, Properties открыть C/C++ выбрать Command Line и в окне Additional Options вписать H:\путь\...\Asc2Un.lib.

7. Перед запуском основной программы скопировать в папку Debug проекта консольного приложения файл Asc2Un.dll.

8. Запустить программу из командной строки, задавая имя файла, в котором находится исходный файл и далее имя файла, куда следует поместить преобразованный файл.

Контрольные вопросы:

1. Какие способы создания динамических библиотек существуют?

2. Опишите процесс неявного связывания функций в динамической библиотеке.

3. Как осуществляется процесс экспорта, импорта функций в динамическую библиотеку при неявном связывании?

4. Опишите функции, которые используются при явном связывании функций в библиотеке (LoadLibrary, FreeLibrary, GetProcAddress).

5. Как создается.DLL файл для функции Asc2Un?

6. Как в вызывающей программе импортируется функция из динамической библиотеки?

7. Поясните работу программы преобразования файла из кодировки ASCII в кодировку Unicode.

Содержание отчета:

1. Титульный лист.

2. Цель работы, перечень оборудования, аппаратного и программного обеспечения.

  1. Общие сведения о создании динамической библиотеки с неявным и явным связыванием.
  2. Описание механизма экспорта и импорта функций в библиотеку c использованием модификаторов _declspec (dllexport), _declspec (dllimport).
  3. Описание функций LoadLibrary, FreeLibrary и GetProcAddress.
  4. Листинг основной программы и функции преобразования файла Asc2Un и результаты преобразования файла.

7. Ответы на контрольные вопросы.

8. Выводы о проделанной работе.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: