Содержание
- 2. Главная программа для использования статической библиотеки . Результаты работы программы: на экран или в файл. Запуск
- 3. Достоинства: просто использовать; исполняемый файл один (.exe). Недостатки: зависит от среды разработки; загружается в память с
- 4. библиотеки применяются для повторного использования кода; статическая библиотека - это библиотека объектных модулей; для использования статической
- 5. Лекции 5, 6 Динамические библиотеки. Командные файлы. Работа с внешними устройствами.
- 6. План лекций № 5, 6 Создание динамических библиотек; Использование динамических библиотек. Статический режим; Использование динамических библиотек.
- 7. Динамические библиотеки (Dynamіc Lіnk Lіbrary - DLL) Загружаются одновременно с программой (статическая загрузка) или во время
- 8. Функция, которая импортируется - это функция из DLL, которая вызывается (используется) в другой программе. Функции, которые
- 9. Исходя из вышесказанного, в файле заголовков (.h) информация о внешних функциях должна быть разной: для самой
- 10. #ifndef _UNIVERSAL_H #define _UNIVERSAL_H #ifdef _STATIC #define PREFIX #else #ifdef _USRDLL #define PREFIX __declspec(dllexport) #else #define
- 11. Динамические библиотеки 1 Статическая загрузка (загрузка во время загрузки приложения, которое использует DLL) - если нет
- 12. Динамические библиотеки Все модули операционной системы делятся на 2 класса: ядра и пользователя Ядро – модули,
- 13. Динамические библиотеки Создание: Выбрать проект типа Visual C++-> Win32; в ApplicationSettings выбрать DLL Добавить в проект
- 14. DEF файл Файл с расширением .def добавляется в проект DLL для сохранения возможности обращения к функциям
- 15. Библиотека системных функций WIN32 APІ - интерфейс между ОС и приложениями пользователя WIN32 APІ (Wіndows Application
- 16. Правила использования функций WIN32 API Необходимо подключить заголовочный файл Windows.h Все функции имеют соглашения по вызову
- 17. Функции для работы с DLL в режиме динамической загрузки HMODULE WINAPI LoadLibrary( LPCTSTR lpFileName ); BOOL
- 18. Алгоритм поиска DLL Каталог, в котором находится исполняемый модуль текущего процесса. Текущий каталог (GetCurrentDirectory). Системный каталог
- 19. Главная программа для DLL в режиме динамической загрузки #include "stdafx.h" #include #include #include “universal.h“ typedef unsigned
- 20. Рекомендации по отладке ДЛЛ В одном Решении и проект для создания ДЛЛ и проект для отладки
- 21. Файл Dllmain.cpp. Точка входа в ДЛЛ. BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
- 22. Достоинства и недостатки DLL Достоинства: в память загружаются только один раз независимо от числа приложений, которые
- 23. Введение в командные файлы (.cmd, .bat) Используются, если необходимо стандартно выполнять более одного действия, например, последовательно
- 24. Введение в командные файлы (.cmd, .bat) Примеры системных команд: copy /v /y источник результат где источник
- 25. Введение в командные файлы (.cmd, .bat) Пример .bat файла: test.bat ==================== copy /v /y %1 %2
- 26. Когда надо задавать? если для выполнения проекта необходимые файлы, которые надо откуда-то скопировать; если перед компоновкой
- 27. Где надо задавать? Propertіes->Buіld Events Pre-Buіld Event перед построением Pre-Lіnk Event перед компоновкой Post-Buіld Event после
- 28. Cреда Vіsual Studіо и командные файлы
- 29. Cреда Vіsual Studіо и командные файлы Как задать имя командного файла? Выбрать CommandLіne и задать командный
- 30. Cреда Vіsual Studіо и командные файлы. Макросы
- 31. Cреда Vіsual Studіо и командные файлы. Итоги Командные файлы помогают выполнять фиксированную последовательность действий; есть помощь
- 32. Управление внешними устройствами 3 уровня: функции языков программирования(scanf, printf, fscanf, fprintf, …) функции операционной системы (системные
- 33. Управление внешними устройствами (стандартные устройства) Создание и удаление консоли BOOL WINAPI AllocConsole(void BOOL WINAPI FreeConsole(void) Имена
- 34. Управление внешними устройствами (стандартные устройства) // Вывести строку-приглашение. Вводить и выводить строки до тех пор пока
- 35. РЕЖИМЫ РАБОТИ КОНСОЛИ BOOL GetConsoleMode(HANDLE hConsoleHandle, LPDWORD lpMode); ENABLE_ECHO_ІNPUT // отображение символов, которые вводятся; ENABLE_LІNE_ІNPUT //
- 36. Режимы работы консоли. Пример Пример1. Определить режимы по умолчанию DWORD dwOldMode, dwNewMode; BOOL b = GetConsoleMode
- 37. Файлы HANDLE WINAPI CreateFile( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, // 0 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 0
- 38. Проверка целостности Test.bat: %1Add_Crc.exe %2 Запуск .bat файла из командной строки: Test.bat C:\Study\ D:\Temp\lab1.dll аналогичен следующему
- 39. dllmain.cpp #include "stdafx.h" #include "tchar.h“ // After .dll will be created command file test.bat calls add_crc.exe.
- 40. dllmain.cpp // продолжение предыдущего слайда Low=GetFileSize(hFile,&High); int counter=(Low-4)/4; int rem=Low%4; for(int i=0;i { ReadFile(hFile,&data,4,&real,0); crc=(crc+data)%0xffff; }
- 41. Файл dllmain.cpp. Точка входа в ДЛЛ. // продолжение предыдущего слайда BOOL APIENTRY DllMain( HMODULE hModule, DWORD
- 42. СРЕДА VІSUAL STUDІО И КОМАНДНЫЕ ФАЙЛЫ
- 43. …………………………….. int _tmain(int argc, _TCHAR* argv[]) { // If DLL was substituted LoadLibrary returns NULL hLib=LoadLibrary(_T("DLL_itself.dll"));
- 45. Скачать презентацию