Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование DLL без библиотеки импорта. Динамическое подключение.
Чтобы загрузить DLL в программу на этапе выполнения, нужно пройти несколько шагов. Шаг 1: Использовать функцию LoadLibrary или LoadLibraryEx, чтобы загрузить DLL. Шаг 2: Использовать функцию GetProcAddress, чтобы получить указатель на интересующую нас функцию. Шаг 3: По окончании работы не забыть выгрузить DLL с помощью функции FreeLibrary. В своей программе я пользовался функцией LoadLibrary. Эта функция возвращает дескриптор DLL. Код: HINSTANCE hDllInstance = LoadLibrary("DLLTEST.dll"); Первый параметр - путь к DLL. Дальше - нам нужно получить указатель на функцию. Тоесть нужно определить тип указателя. Это делается строкой (в нашем случае) Код: typedef void (WINAPI *cfunc)(); Тоесть мы определили cfunc как тип, который указывает на функцию, которая без параметра и возвращает значение void. Далее - дело за малым. Код:
cfunc NumberList; cfunc LetterList; NumberList=(cfunc)GetProcAddress((HMODULE)hLib, "NumberList"); LetterList=(cfunc)GetProcAddress((HMODULE)hLib, "LetterList");
Мы объявили указатель, и с помощью функции GetProcAddress получаем адрес интересующей нас функции. Первый параметр - дескриптор DLL. Второй - имя функции. Теперь можно вызывать эти функции Код: NumberList(); LetterList();
Исходный файл приложения, использующего библиотеку DLL - консольное приложение Win32 (DLLRUN02.EXE)
Этот код загружает DLL (если она находится в путях или в текущем каталоге), а затем определяет адреса функций, которые мы будем вызывать. Конечно, в этом случае пришлось написать намного больше кода, и, соответственно, придется отловить немало ошибок. Однако такой подход универсальней. Результаты работы DLLRUN02.EXE
Лабораторная работа № 22. Создание и использование DLL (Microsoft Visual C++). Цель работы: Овладеть навыками создания и использования динамически подключаемых библиотек (DLL) Постановка задачи 1. Пользовательские функции хранятся в DLL файле и вызываются в приложении. Продемонстрировать разные способы работы с DLL. 2. Написать функцию с умалчиваемыми параметрами в соответствии с вариантом, продемонстрировать различные способы вызова функции:
3. Написать функцию с переменным числом параметров в соответствии с вариантом, продемонстрировать вызов функции с различным числом параметров. 4. Написать перегруженные функции в соответствии с вариантом. Написать демонстрационную программу для вызова этих функций. 5. Написать шаблон функций вместо перегруженных функций из задания 3. Написать демонстрационную программу для вызова этих функций. списка параметров 6. Решить уравнение указанным в варианте методом. Уравнение передать в функцию как параметр с помощью указателя. Варианты
Методические указания
1. В функции с умалчиваемыми параметрами использовать структурированный тип данных. 2. При демонстрации вызова функции с умалчиваемыми параметрами учесть, что опускать параметры функции можно только с конца. 3. В функции с переменными числом параметров можно использовать любой механизм определения конца списка параметров (передачу количества параметров как параметр функции или использование признака конца списка параметров). 4. Перегрузить функции для массивов типа char, int, и double. 5. Инстанцировать шаблон функции для типов char, int, и double. 6. Для нахождения корня уравнения написать как минимум две функции. Одна функция реализует уравнение, для которого вычисляется корень, другая - метод решения уравнения, указанный в варианте. Первая функция передается во вторую как параметр, с помощью указателя. 7. Точность нахождения корня уравнения выбирается не менее 0.001. 8. Полученный результат вычисления корня сравнить с точным значением, заданным в задании. Содержание отчета 1. Постановка задачи (общая и для конкретного варианта). 2. Определения функций для реализации поставленных задач. 3. Определение функции main(). 4. Тесты 17. Регулярные выражения в С++ Краткая теория Стандартный класс string позволяет выполнять над строками различные операции, в том числе поиск, замену, вставку и удаление подстрок. Тем не менее, есть классы задач по обработке символьной информации, где стандартных возможностей явно не хватает. Чтобы облегчить решение подобных задач, в Net Framework встроен более мощный аппарат работы со строками, основанный на регулярных выражениях. Регулярные выражения предназначены для обработки текстовой информации и обеспечивают: 1) Эффективный поиск в тексте по заданному шаблону; 2) Редактирование текста; 3) Формирование итоговых отчетов по результатам работы с текстом.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-11; просмотров: 520; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.67.26 (0.015 с.) |