русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Поняття DLL


Дата додавання: 2014-10-07; переглядів: 998.


DLL бібліотека, що динамічно приєднується — це спеціального виду файл з розширенням.dll, який використовується для зберігання функцій і ресурсів окремо від файлу, що виконується. Звичайно, коли ви пишете програму й створюєте функції, ресурси й т.і., усі вони компонуються у ваш файл, що виконується. Коли ж ви використовуєте DLL, то викликувані з неї функції використовуються вашим модулем у процесі його виконання. DLL робить корисні, часто використовувані функції доступними відразу для багатьох додатків одночасно, хоча робота ведеться тільки з однієї її копією на диску й у пам'яті. Звичайно DLL не завантажується у пам’ять, поки це не стане необхідним, але, будучи одного разу завантажена, вона робить свої функції й ресурси доступними для будь-якої програми.

Припустимо, ви розробили різні корисні процедури й функції й використовуєте їх у різних своїх додатках. Звичайно, ви можете просто скопіювати ці процедури й функції в кожен ваш проект. Але тоді, якщо кілька ваших додатків працює на комп'ютері одночасно, то для кожного додатка у пам’ять завантажуються копії ваших процедур й пам'ять, таким чином, витрачається неефективно. Та й витрати простору на дисках також надлишкові, оскільки ці процедури в складі виконуваних модулів також тиражуються. Якщо ж ви помістили свої процедури в DLL, то всі ці проблеми знімаються.

Створення DLL підвищує також гнучкість вашої програми. Наприклад, ви можете створити кілька бібліотек, що містять усі використовувані вашим додатком тексти — написи, підказки й т.і. Кожна із цих бібліотек може містити тексти на тій або іншій мові: російській, англійській, німецькій. Тоді залежно від того, яку із цих бібліотек буде застосовувати користувач, програми будуть «спілкуватися» з ним на потрібній мові.

За допомогою DLL ви можете полегшити собі модифікацію ваших додатків. Нехай ви реалізували якісь свої функції звичайним образом, включивши їх у додаток і розіславши цей додаток користувачам. А потім з'явилися якісь нові можливості, які могли б розширити ваші функції. Наприклад, з'явилися нові формати файлів, на які можна було б настроїти ваші функції. Щоб реалізувати ці нові можливості, вам доведеться переписати колишні функції, скомпілювати новий додаток і розіслати всім вашим користувачам. А якщо ви реалізували функції у вигляді DLL, то перекомпіляція додатків не буде потрібною. Досить створити нову невелику DLL з тим же ім'ям і тими ж іменами функцій, реалізованих по-новому, і розіслати користувачам тільки цю нову DLL.

Ще однією перевагою DLL є те, що вони можуть використовуватися додатками, написаними на інших алгоритмічних мовах. Наприклад, ви можете використовувати бібліотеки, написані на C++, Visual Basic, Access Basic і ін. А ваші бібліотеки, створені в Delphi, зможуть використовувати будь-які системи, які вміють викликати DLL, незалежно від того, на яких алгоритмічних мовах вони написані.

Бібліотеки DLL можуть зв'язуватися з вашим додатком двома шляхами: статичним зв'язуванням або динамічним зв'язуванням.

Статичне зв'язування означає, що DLL завантажується відразу, як тільки починає виконуватися додаток, який буде її використовувати. Це найбільш простий спосіб використання DLL. Виклик функцій у додатку, що використовує подібну DLL, майже не відрізняється від виклику будь-яких інших функцій. Деякими недоліками такого підходу можна вважати збільшення часу завантаження вашого додатка (адже крім виконуваного модуля додатка в цей момент вантажаться також модулі відповідних DLL) і неможливість виконання додатка користувачем, у якого немає відповідного файлу DLL. Останнє важко назвати істотним недоліком, оскільки, звичайно, ви повинні поширювати додаток разом з DLL. Але ж деякі дії додаток міг би робити й без DLL, тобто він міг би в урізаному вигляді функціонувати й при відсутності DLL. Однак при статичному зв'язуванні це неможливо. Ще одним недоліком статичного зв'язування є те, що DLL займає пам'ять увесь час, протягом якого виконується додаток, незалежно від того, викликаються в даному сеансі роботи з додатком якісь функції бібліотеки, чи ні.

Динамічне зв'язування відрізняється від статичного тим, що бібліотека DLL завантажується тільки в той момент, коли необхідно виконати якусь функцію, що зберігається в ній. Потім цю бібліотеку можна вивантажити з пам'яті. Це забезпечує, звичайно, більш ефективне використання пам'яті. Але зате виклик відповідних функцій бібліотеки суттєво ускладнюється, та й час виклику теж збільшується через необхідність завантажувати й вивантажувати бібліотеку.


<== попередня лекція | наступна лекція ==>
Створення підпрограм для обробки компонентів | Створення DLL бібліотеки в Delphi


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн