
- •Для чего используются библиотечные файлы?
- •Статически и динамически подключаемые библиотеки
- •Методика выполнения работы Создание статической библиотеки с помощью репозитория объектов
- •Использование файла библиотеки модулей
- •2. Создание динамически подключаемой библиотеки с помощью репозитория объектов
- •Задание на дом
- •Командные символы
- •Примеры работы с tlib
Кафедра автоматизации технологических процессов
Тверского государственного технического университета
Разработчик: доцент В. Г. Васильев
Лабораторная работа № 8
«СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ФАЙЛОВ БИБЛИОТЕК»
по дисциплине «Структуры и алгоритмы обработки данных»
(для специальности «Управление в технических системах»)
Цель работы: изучить методы создания файлов библиотек модулей и их использования в программах.
Задание: создать библиотечные файлы и использовать функции из файлов библиотек в прикладной программе.
Для чего используются библиотечные файлы?
Сложные программы всегда состоят из большого числа отдельных подпрограмм. Каждая такая подпрограмма обычно хранится в отдельном файле и, если файлов много, то возникают известные неудобства для продуктивной работы над программным проектом. В этой связи основные
и хорошо отлаженные подпрограммы, которые являются "строительным материалом", собирают с помощью специальной программы в отдельный библиотечный файл.
Библиотека - это собрание функций (модулей), которые были скомпилированы или ассемблированы для получения набора объектных модулей. Использование файлов библиотек является исключительно удобным средством. Все системы программирования и инструментальные средства поставляются с готовыми библиотеками. При инсталляции таких сред обычно создается каталог и именем LIB, в котором содержаться библиотеки функции.
Статически и динамически подключаемые библиотеки
Статически подключаемые библиотеки. Метод подключения к исполняемой программе стандартных функций из библиотек с помощью компоновки их в программный EXE-файл называется статической компоновкой. Другими словами, при статической компоновке библиотечный объект становится непосредственно частью программы. Статически подключаемые библиотеки, или по-другому, автономные библиотеки имеют расширение файла lib. Автономная библиотека состоит из "объектных модулей" (объектных файлов), объединенных в библиотеку. В отличие от объектных файлов, объектные модули не существуют отдельно от библиотек, к которым они принадлежат, и не имеют ни наименования маршрута, ни расширения.
Для создания и управления содержимым автономных библиотек используется программа, которая называется администратором (диспетчером) библиотек. Расширение файла .LIB характеризует библиотеку, созданную библиотечным диспетчером TLIB (С++ Builder). Модули связываются с программой на этапе компоновки, т. е. статически. Если загружены две программы, использующие одни и те же модули, в памяти будут два экземпляра одинаковых фрагментов кода. Изменение любой библиотеки требует перекомпиляции использующей ее программы.
Динамически подключаемые библиотеки. Динамически подключаемые библиотеки (далее DLL - Dynamic Link Library) представляют собой универсальный механизм интегрирования в вашу программу процедур и функций, написанных другими программистами и, в общем случае, на других, языках программирования. DLL реализуются в виде исполняемых модулей, содержащих готовые к работе процедуры, функции и/или ресурсы. С точки зрения программиста, есть много общего между DLL и обычными для Си- модулями, т. к. в конечном счете и библиотеки, и модули поставляют подпрограммы, избавляющие программиста от написания собственного кода.
Но есть и принципиальные отличия. Главным из них является то, что DLL не в состоянии поставлять в программу переменные, константы и типы, ведь создатели DLL могут использовать не типизированные языки программирования, например, язык ассемблера.
Другим важным отличием является способ связывания экспортируемых подпрограмм с основной программой. DLL подключаются к программе в момент ее исполнения, т. е. динамически. Если опять же две программы используют одну и ту же DLL, в памяти будет лишь один экземпляр разделяемого программами кода. Следует уточнить, что речь идет о физической памяти компьютера. Поскольку каждая программа получает в свое распоряжение виртуальное адресное пространство, в эти пространства будут отображаться столько образов DLL, сколько программ ее используют. Динамическое подключение DLL дает им еще одно немаловажное преимущество над модулями: изменение любой DLL в большинстве случаев не требует перекомпиляции использующей ее программы.
Загрузка dll может быть выполнена двумя способами – статически и динамически. Оба способа имеют свои достоинства и недостатки.
Статическая загрузка означает, что dll автоматически загружается при запуске приложения и выгружается, когда оно завершается. Программист не может управлять загрузкой/выгрузкой. Если библиотек несколько, то все они находится в памяти.
ddl содержит экспортируемые функции. Описание функций находится в специальном файле – файле библиотеки импорта. Имя этого файла lib и оно совпадает с именем соответствующей библиотеки dll. Для использования dll необходимо подключить через менеджер проекта lib- файл для dll.
Для того чтобы воспользоваться функциями из dll они должны быть описаны с ключевым словом _export. При создании приложения необходимо импортировать функцию из dll. Импорт функции осуществляется с помощью модификатора _import. Этот модификатор информирует компилятор, что ссылка на объявленную функцию находится в файле библиотеки импорта (файл с расширением lib).
Динамическая загрузка означает, что dll загружается по мере необходимости и выгружается, когда в ней отпадает необходимость. Это экономит память.