Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 08 по СиАОД(УТС).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
674.82 Кб
Скачать

Кафедра автоматизации технологических процессов

Тверского государственного технического университета

Разработчик: доцент В. Г. Васильев

Лабораторная работа № 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 загружается по мере необходимости и выгружается, когда в ней отпадает необходимость. Это экономит память.