Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABAS__OS_final_after2Kachko.DOC
Скачиваний:
9
Добавлен:
24.11.2019
Размер:
360.96 Кб
Скачать

2.2.2Загальна характеристика динамічних бібліотек

Динамічні бібліотеки (Dynamic Link Library - DLL), файли з розширенням DLL, завантажуються під час завантаження модуля, який використовує бібліотеку, або під час його виконання.

Переваги DLL:

  • бібліотеки не залежать від середовища, в якому вони створені. Так, бібліотеку, яку було створено в середовищі С++ Builder, може бути використано в середовищі Visual Studio та навпаки;

  • при зміні коду бібліотеки не потрібна повторна компоновка додатків, які використовують цю бібліотеку, ось чому операційна система використовує цей тип бібліотек для модулів, які можуть змінюватися в залежності від версії та в разі помилок;

  • якщо декілька додатків використовують одну і ту ж бібліотеку, копія цієї бібліотеки зберігається в пам’яті тільки один раз.

Недоліки DLL:

  • окрім програми, яка виконується необхідно мати додатковий модуль – саму бібліотеку;

  • функції DLL використовувати складніше, ніж функції статичної бібліотеки.

Решта переваг та недоліків DLL залежать від режимів використання бібліотеки цього типу.

Порівняйте переваги і недоліки кожного типу бібліотек і зробіть висновки по тому, коли треба використовувати кожний тип бібліотеки.

2.2.3Створення статичних бібліотек

Незалежно від середовища, в бібліотеку можна підключати C++, C, OBJ файли. Файли на мові Асемблер мають особливості, які залежать від середовища, тому краще усі функції писати з заголовком на мові С.

Розглянемо формування статичної бібліотеки для Visual Studio 2008, для інших середовищ бібліотеки створюються подібно.

Спосіб 1. Використання середовища. Виконати ProjectWin32 Project і далі обрати в Application Settings - Static library і далі натиснути Finish. До проекту можна додавати як нові компоненти, так і вже існуючі. у тому числі інші статичні бібліотеки. Серед модулів, які додаються не може бути модуля з визначенням головної функції. В результаті буде сформовано файл *.lib. Ім’я бібліотеки співпадає з іменем проекту, його можна замінити. Бібліотека вміщує довідник функцій, в якому для кожної функції визначається її відносна адреса і розмір. Після довідника розташовані самі функції.

Недолік цього способу – треба ввійти в середовище для розробки при довільних змінах в бібліотеці, наприклад, додавання коментаря.

Спосіб 2. Використання командного файлу. Для створення бібліотеки необхідно виконати:

  • компіляцію усіх файлів з розширенням c, cpp (програма cl.exe);

  • створення бібліотеки з окремих об’єктних модулів (програма lib.exe).

При завданні програм для виконання необхідно задавати повне ім’я файлу.

Для програми cl.exe дуже багато параметрів, але обов’язковими є тільки:

/I " Шлях до каталогу include Visual Studio ", якщо використовуються стандартні файли заголовків;

/c – тільки компіляція (компонувальник не використовується);

Приклад рядка для виклику cl.exe, якщо каталог для двійкових файлів"c:\Program Files\Microsoft Visual Studio 9.0\VC\bin, каталог для стандартних файлів – заголовків: c:\Program Files\Microsoft Visual Studio 9.0\VC\include, а в бібліотеку треба підключити функції з файлу static.cpp:

"c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe" /I "c:\Program Files\Microsoft Visual Studio 9.0\VC\include" /c static.cpp

Для перевірки успішності завершення компіляції (не було помилок компіляції) використовуємо рядок:

if ErrorLevel 1 goto merror

Для програми lib.exe в якості параметрів задаються:

/OUT: Імя файлу – бібліотеки з розширенням lib;

Імена об’єктних файлів, та бібліотек, які необхідно підключити до бібліотеки.

Приклад рядка для виклику lib.exe, якщо каталог для двійкових файлів"c:\Program Files\Microsoft Visual Studio 9.0\VC\bin і в бібліотеку підключається файл static.obj:

"c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\lib.exe" /OUT:static.lib static.obj

Для перевірки успішності створення бібліотеки використовуємо рядок:

if ErrorLevel 1 goto merror

Після створення бібліотеки знищуємо непотрібні файли типу .obj (рядок del *.obj)

Таким чином, командний файл (назвемо його static.cmd):

"c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe" /I "c:\Program Files\Microsoft Visual Studio 9.0\VC\include" /c static.cpp

if ErrorLevel 1 goto merror

"c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\lib.exe" /OUT:static.lib static.obj

if ErrorLevel 1 goto merror

del *.obj

echo ok

goto mok

:merror

echo error

:mok

Порівняйте бібліотеки, створені в середовищі, та за допомогою командного файлу!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]