- •1. Библиотеки. Статическая библиотека. Создание.
- •2. Библиотеки. Статическая библиотека. Использование.
- •3. Библиотека. Динамическая библиотека. Создание.
- •4. Библиотека. Динамическая библиотека. Статическая загрузка.
- •5. Библиотека. Динамическая библиотека. Динамическая загрузка.
- •7. Библиотеки. Динамическая библиотека. Сравнение способов загрузки.
- •8.Использование файлов при создании программы.
- •9. Позиционирование при работе с файлами. Функция.
- •10. Отображение файла на памяти. Назвать назначения параметров в функции.
- •11. Управление памятью. Для чего используется.
- •12.Блокирование памяти. В каком случае используется. Функции для блокирования.
- •13.Управление памятью. Для чего используют функции:
- •14. Для чего создаются процессы. Функции.
- •15. Назначение функций:
- •16. Асинхронный ввод/вывод:
- •17. Для чего используются потоки. Функции
- •18. Приоритеты процессов и потоков. Функции:
- •19. Синхронизация потоков. Interlocked функции. Назначение функций:
- •20. Синхронизация потоков. Критические секции. Функции.
- •21. Использование Event для синхронизации. Функции:
- •22. Использование Semaphore для синхронизации. Функции:
- •23. Использование WaitableTimerдля синхронизации. Функции:
- •24) Управление процессом. Планирование и диспетчеризация.
- •25) Использование Mutex для синхронизации. Функции.
- •26) Сравнение сегментной и страничной адресации
- •27) Страничная организация памяти.
- •29) Локальная память компьютеров. Функции
- •30. Соглашения по вызову, объяснить следующие с, срр, fastcall, stdcall. Дайте рекомендации по использованию соглашения.
5. Библиотека. Динамическая библиотека. Динамическая загрузка.
Существует два основных способа подключить DLL к программе - динамический и статический.
При динамическом подключении (explicit linking) приложение вызывает функцию LoadLibrary, чтобы загрузить DLL, затем использует функцию GetProcAddress, чтобы получить указатели на требуемые функции (или переменные), а по окончании работы с ними вызывает FreeLibrary, чтобы выгрузить библиотеку и освободить занимаемые ею ресурсы.
Например загрузка DLL выглядит так:
HMODULE hLib;
hLib = LoadLibrary("MyDll.dll");
Например вызов функций DLL выглядит так:
void (*pFunction)(int, int);
(FARPROC &)pFunction = GetProcAddress(hLib, "Function");
pFunction(0, 0);
Доступ к переменным в DLL выглядит так:
int *pVar;
(FARPROC &)pVar = GetProcAddress(hLib, "Var");
*pVar = 123;
После того, как работа с библиотекой закончена, ее можно выгрузить, чтобы она не занимала системные ресурсы. Для этого используется функция FreeLibrary, которой следует передать дескриптор освобождаемой библиотеки.
Например выгрузка библиотеки выглядит вот так: FreeLibrary(hLib);
Динамический метод подключения лишен недостатков как при статическом подключении, но делает программирование более неудобным, поскольку требуется следить за своевременными вызовами LoadLibrary и соответствующими им вызовами FreeLibrary, а также получать адрес каждой функции через вызов GetProcAddress.
6. Библиотеки. Сравнение.
Статическая библиотека |
Динамическая библиотека |
Достоинства: - образует вместе с остальными дополнениями единое целое, т.е. для использования приложения достаточно иметь один файл типа exe. - Обращаться к функциям в библиотеки очень просто, пользование функции из статической библиотеки ни чем не отличается от использования функций, определенных в приложении. - Более защищены чем динамические библиотеки. Недостатки: - библиотека зависит от среды разработки. Библиотека, которая была создана в С++Builder, нельзя использовать в Visual Studio и наоборот. - хранятся в памяти постоянно причем в стольких экземплярах, сколько запущено программ, использующих эту библиотеку. - при необходимости обновления библиотеки, необходимо обновить все приложения, использующие эту библиотеку.
|
Достоинства: - библиотеки не зависят от среды, в котором они созданы. Так библиотека, созданная в среде С + + Builder, можно использовать в среде Visual Studio и наоборот; - при изменении кода библиотеки не требуется повторная компоновка приложений, использующих эту библиотеку, вот почему операционная система использует этот тип библиотек для модулей, которые могут изменяться в зависимости от версии и в случае ошибок; - если несколько приложений используют одну и ту же библиотеку, копия этой библиотеки хранится в памяти только один раз. Недостатки: - Кроме программы, которая выполняется необходимо иметь дополнительный модуль - саму библиотеку. - Функции DLL использовать сложнее, чем функции статической библиотеки. - Остальные преимуществ и недостатков DLL зависят от режимов использования библиотеки этого типа. Недостатки статического режима использования .dll: - .lib файл является платформенно -зависимым. - .dll не всегда содержит .lib файл, например ресурсная DLL. - dll находится в памяти все время выполнения программы. Динамический метод подключения делает программирование более неудобным, поскольку требуется следить за своевременными вызовами LoadLibrary и соответствующими им вызовами FreeLibrary, а также получать адрес каждой функции через вызов GetProcAddress.
|