2. Содержание
Что такое библиотека программирования
Виды библиотек программирования
Структура библиотек программирования
Особенности библиотек программирования
Рекомендации
Разработка библиотек программирования
Статические библиотеки
Динамические библиотеки
Использование библиотек программирования
Неявное связывание
Явное связывание
3. Библиотеки Программирования
Под библиотеками программирования
понимают архивы ресурсов программирования,
таких как функции, классы, объекты, константы и
различные переменные.
В частности, константами могут быть заданы графические или
мультимедийные данные.
4. Виды библиотек программирования
Статические библиотеки
При компиляции в программу вставляются куски
объектного кода из библиотеки, представляющие
функцию (класс или другой ресурс).
Динамические библиотеки
При компиляции в программу вставляются вызовы
функций (ссылки на ресурсы) из динамической
библиотеки.
5. Структура библиотек программирования
Заголовочный
файл
Статическая
библиотека
Заголовочный
файл
Библиотека
импорта
Динамическая
библиотека
Статические библиотеки Динамические библиотеки
*.h
*.lib
(*.a)
*.h
*.lib
(*.a)
*.dll
(*.so)
6. Особенности библиотек программирования
В программу включается код
только используемых
функций.
Программа не зависит от
наличия библиотек в ОС.
Занимают относительно мало
места в О.П.
Большой размер программ.
В случает обновления
библиотеки требуется
перекомпиляция программы.
Программа загружает в
оперативную память всю
используемую dll.
Несколько программ работает
с одной dll одновременно.
Маленький размер программ
Требует наличие dll в ОС.
Возможно обновление версии
dll без перекомпиляции
программы.
Статические библиотеки Динамические библиотеки
7. Рекомендации
Если библиотека редкая или нестандартная,
лучше использовать статическую компоновку
программы.
Если библиотека широко распространена или
стандартная, то рекомендуется использовать
динамическую компоновку программы.
Желательно создавать обе версии библиотек: и
динамическую, и статическую.
12. Динамические библиотеки:
файлы определения модулей
Используются для
определения функций на
экспорт вместо
__declspec(dllexport)
MODULE mylib
EXPORTS
min @1
isPrime @2
nope @3 ; no operation
13. Динамические библиотеки:
точка входа
Динамические библиотеки могут иметь
точку входа (использует windows.h).
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
){
switch (ul_reason_for_call){
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
14. Использование библиотек
программирования
Статическая линковка
Динамическое неявное связывание
Динамическое явное связывание
Линковка статических библиотек и
неявное связывание динамических
библиотек совпадают по
реализации.