Слайд 2DLL
Бібліотеки, що мають динамічне підключення (Dynamics Link Libraries, DLL) - наріжний камінь
операційної системи Windows, починаючи з найпершої її версії. В DLL утримуються всі функції Windows API.
Три найважливіші DLL: Kernel32.dll (керування пам'яттю, процесами й потоками), User32.dll (підтримка користувальницького інтерфейсу, у тому числі функції, пов'язані зі створенням вікон і передачею повідомлень) і GDI32.dll (графіка й виведення тексту).
Слайд 3Переваги DLL
Розширення функціональності додатка
DLL можна динамічно завантажувати в адресний простір процесу, що
дозволяє додатку, визначивши, які дії від нього потрібні, довантажувати потрібний код. Тому одна компанія, створивши якийсь додаток, може передбачити розширення його функціональності за рахунок DLL від інших компаній.
Слайд 4Переваги DLL
Можливість використання різних мов програмування.
Немає значення, на якій мові писати
ту або іншу частину додатка Так, користувальницький інтерфейс додатка можна створювати на Microsoft Visual С#, але прикладну логіку найкраще реалізувати на С++. Програма на С# може завантажувати DLL, написані на С++, JAVA, BASIC.
Слайд 5Переваги DLL
Більш просте керування проектом.
Якщо в процесі розробки програмного продукту окремі
його модулі створюються різними групами, то при використанні DLL таким проектом управляти набагато простіше. Однак кінцева версія додатка повинна включати якнайменше файлів.
Слайд 6Переваги DLL
Економія пам'яті
Якщо ту саму DLL використає кілька додатків, в оперативній пам'яті
може зберігатися тільки один її екземпляр, доступний цим додаткам. Приклад — DLL-версія бібліотеки С/С++. Нею користуються багато додатків.
Слайд 7Переваги DLL
Розділення ресурсів
DLL можуть містити такі ресурси, як шаблони діалогових вікон, рядка,
значки й бітові карти (растрові зображення). Ці ресурси доступні будь-яким програмам.
Слайд 8Переваги DLL
Спрощення локалізації
DLL нерідко застосовуються для локалізації додатків. Наприклад, додаток, що містить
тільки код без усяких компонентів користувальницького інтерфейсу, може завантажувати DLL з компонентами локалізованого інтерфейсу.
Слайд 9Переваги DLL
Рішення проблем, пов'язаних з особливостями різних платформ
У різних версіях Windows утримуються
різні набори функцій. Найчастіше розроблювачам потрібні нові функції, що існують у тій версії системи, якою вони користуються. Рішення такої проблеми – завантажити їх у вигляді DLL
Слайд 10Переваги DLL
Реалізація специфічних можливостей
Певна функціональність в Windows доступна тільки при використанні DLL.
Наприклад, окремі види пасток, установлюваних викликом SetWindowsHookEx і SetWinEventHook можна задіяти при умові, що функція повідомлення пастки розміщена в DLL. Крім того, розширення функціональності оболонки Windows можливо лише за рахунок створення Соm-об'єктів, існування яких припустимо тільки в DLL. Це ж має відношення й до додатків, що завантажуються Web-браузером, ActiveX-елементам, що дозволяють створювати Web-сторінки з більш багатою функціональністю.
Слайд 11Підготовка Exe- і Dll- модулів
Підготовка заголовного файлу із прототипами функцій, структурами й
ідентифікаторами, експортованими з DLL. Цей файл включається у вихідний код всіх модулів DLL.
На С/С++ створюється модуль (або модулі) вихідного коду з тілами функцій і визначеннями змінних, які повинні перебувати в DLL.
Компілятор перетворить вихідний код модулів DLL в OBJ-файли (по одному на кожний модуль).
Компонувальник збирає всі OBJ-модулі в єдиний завантажувальний DLL-модуль, у який в остаточному підсумку містяться двійковий код і змінні (глобальні й статичні), що належать до даного DLL. Цей файл буде потрібно при компіляції модуля, що виконується.
Якщо компонувальник виявить, що DLL експортує хоча б одну змінну або функцію, то створить і LIB-файл. Цей файл зовсім малюсінький, оскільки в ньому немає нічого, крім списка символьних імен функцій і змінних, експортованих з DLL. Цей LIB-файл теж знадобиться при компіляції ЕХЕ-файла.
Створивши DLL, можна перейти до зборки модуля, що виконується.
В усі модулі вихідного коду, де є посилання на зовнішні функції, змінні, структури даних або ідентифікатори, треба включити заголовний файл, наданий розроблювачем DLL.
Слайд 12Неявне зв'язування EXE- і DLL-модулів