Лекция 21: Программы на языке С при использовании статически подключаемой библиотеки
Теоретическая часть
Библиотека представляет собой набор функций [20.1]. Когда программа использует библиотечную функцию, редактор связей находит эту функцию и добавляет ее код в программу. Исполняемый файл содержит только те функции, которые используются программой, а не все библиотечные функции [20.1].
Статически подключаемая библиотека содержит набор уже откомпилированных объектных файлов с функциями и данными. Библиотеки целесообразно применять для хранения функций, которые могут быть использованы при создании различных программ, реализующих распространенные алгоритмы и осуществляющих поддержку и обработку распространенных структур данных.
Библиотека называется статически подключаемой, если код, содержащийся в ней, непосредственно компонуется к основной программе.
Механизм компиляции и компоновки программы на языке C требует, помимо наличия откомпилированного библиотечного модуля, присутствия заголовочных файлов ( h -файлов), содержащих объявления структур данных и прототипы функций, предоставляемых библиотекой.
Среда Visual Studio 2010 использует расширение .lib для библиотечных модулей. При создании статически подключаемой библиотеки в среде Visual Studio 2010 необходимо выполнить следующую последовательность действий.
Создать новый проект (пункты главного меню: File–New–Project ), выбрать тип проекта в списке Project types: Win32–Win32Project и задать имя проекта, например, containers. При необходимости можно указать место его расположения, используя кнопку Browse. В результате должна получиться форма, показанная на рис. 20.1.
Далее следует нажать кнопку OK. Появится форма С заголовком "Win32 Application Wizard – containers.
На закладке Application Settings мастера создания проекта сделать следующие настройки:
- Application type (тип приложения) установить в Static Library (статическая библиотека);
- Снять флажок с пункта Precompiled header (прекомпилированный заголовок).
После установки настроек появится форма ( рис. 20.2), которая представляет собой пустой проект статической библиотеки.
Для завершения настройки закладки Application Settings следует нажать кнопку Finish. Появится форма, показанная на рис. 20.3.
Добавление файлов в проект библиотеки осуществляется стандартным образом, как и для проекта Win32 Console Application. В соответствии с рис. 20.3существующие файлы, которые будут использоваться в многофайловом проекте, могут быть подключены при установки курсора мыши на папках Header Files, Resource Files, Source Files с последующим нажатием правой клавиши и выбором пункта меню Add, а именно Existing Item.
Для подключения h -файлов, т.е. *.h, следует обратиться к папке проекта Header Files, для подключения к проекту с-файлов, т. е. *.с, использовать папку Source Files.
Выполним подключение существующих файлов stack.h / stack.c, queue.h / queue.c, реализующие в простейшем виде две важные структуры данных – стек и очередь.
Так как статическая библиотека не является исполняемой программой, а только механизмом для хранения подпрограмм, то среди функций библиотеки не должно быть функции main().
После подключения файлов получится форма, показанная на рис. 20.4, с открытой программой файла stack.h.
До выполнения компиляции необходимо выполнить настройку проекта. Настройка параметров компилятора выполняется так же, как и для проекта Win32 Console Application. В частности, из пункта меню Project следует выбрать containers Properties (Alt+F7). После раскрытия узла Configuration Properties появится форма, показанная на рис. 20.5.
Сначала следует обратиться к пункту General. Затем, к закладке Character Set, в которой выбрать Use Multy-Byte Character Set (как и при настройке консольного приложения).
Далее необходимо раскрыть узел С/С++, в котором следует обратиться к закладке Code Generation, затем в другой панели закладка Enable C++ Exceptions устанавливается в положение No (как и при настройке консольного приложения).