Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Visual_Studio_2010

.pdf
Скачиваний:
109
Добавлен:
03.03.2016
Размер:
5.94 Mб
Скачать

Тема 20

ПРОГРАММЫ НА ЯЗЫКЕ С ПРИ ИСПОЛЬЗОВАНИИ СТАТИЧЕСКИ ПОДКЛЮЧАЕМОЙ БИБЛИОТЕКИ

Cтавится задача создания и применения статической подключаемой библиотеки с помощью MS Visual Studio 2010, осуществления компиляции нескольких файлов, размещенных в ней.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Библиотека представляет собой набор функций [1]. Когда программа обращается к библиотечной функции, редактор связей находит эту функцию и добавляет ее код в программу. Исполняемый файл содержит только те функции, которые используются программой, а не все библиотечные функции [1].

Библиотека называется статически подключаемой, если код, находящийся в ней, непосредственно компонуется к основной программе. Такая библиотека содержит набор уже откомпилированных объектных файлов с функциями и данными. Библиотеки целесообразно применять для хранения функций, которые могут быть использованы при создании различных программ, реализующих распространенные алгоритмы и осуществляющих поддержку и обработку распространенных структур данных.

Механизм компиляции и компоновки программы на языке C требует, помимо наличия откомпилированного библиотечного модуля, присутствия заголовочных файлов (h-файлов), содержащих объявления структур данных и прототипы функций, предоставляемых библиотекой.

Среда Visual Studio 2010 использует расширение .lib для библиотечных модулей. При создании статически подключаемой библиотеки в среде Visual Studio 2010 необходимо выполнить следующую последовательность действий: разработать новый проект (пункты главного меню: File New Project), выбрать тип проекта в списке Project types (Win32 Win32 Project) и задать имя проекта, например containers. При необходимости можно указать место его расположения, используя кнопку Browse. В результате должна получиться форма, показанная на рис.20.1.

361

Рис.20.1. Окно создания проекта с подключаемой библиотекой

Далее следует нажать кнопку OK. Появится форма с заголовком Win32 Application Wizard – containers.

На закладке Application Settings мастера создания проекта нужно сделать следующие настройки:

установить Application type (тип приложения) в Static Library (ста-

тическая библиотека);

снять флажок с пункта Precompiled header (прекомпилированный заголовок).

После установки настроек появится форма (рис.20.2), которая представляет собой пустой проект статической библиотеки.

362

Рис.20.2. Настройка приложения статической библиотеки

Для завершения настройки закладки Application Settings следует нажать кнопку Finish. Появится форма, показанная на рис.20.3.

363

Рис.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().

После подключения файлов получится форма с открытой программой файла stack.h (рис.20.4).

364

Рис.20.4. Окно проекта статической библиотеки с подключенными файлами

До выполнения компиляции необходимо произвести настройку параметров компилятора так же, как и для проекта Win32 Console Application. В частности, из пункта меню Project следует выбрать containers Properties (Alt+F7). После раскрытия узла Configuration Properties появится форма, показанная на рис.20.5.

365

Рис.20.5. Обращение к странице свойств проекта

Сначала нужно обратиться к пункту General, затем – к закладке Character Set, в которой выбрать Use Multy-Byte Character Set (как и при настройке консольного приложения). Далее необходимо раскрыть узел С/С++, в котором обратиться к закладке Code Generation, затем в другой панели закладка Enable C++ Exceptions устанавливается в положение No (как и при настройке кон-

сольного приложения).

 

Результат установки свойств закладки Language представлен

на

рис.20.6.

 

366

Рис.20.6. Установка свойств закладки Language

Режим работы языка С в MS Visual Studio устанавливается на закладке

Advanced (рис.20.7).

367

Рис.20.7. Результат выбора компиляции языка С

Важным моментом, на который требуется обратить внимание, является версия используемой библиотеки времени выполнения (runtime library). Библиотека времени выполнения содержит функции стандартной библиотеки языка С, а также некоторое вспомогательное окружение, которое позволяет программе, написанной на языке С, выполняться в ОС Windows. Версии библиотеки времени выполнения для статически подключаемой библиотеки и для программы, ее использующей, должны совпадать. Поэтому статически подключаемую библиотеку часто компилируют в различных конфигурациях, каждая из которых использует свою версию библиотеки времени выполнения. В примере будем использовать многопоточную отладочную версию библиотеки, подключаемую к программе динамически (Multi-threaded Debug DLL) для отладочной сборки библиотеки, и многопоточную версию, подключаемую динамически (Multi-threaded DLL), для конечной версии программы.

Тип используемой библиотеки времени выполнения выбирается на стра-

нице свойств [C/C++]|[Code Generation]|[Runtime Library]. Он должен совпа-

дать с типом, выбранным при настройке свойств библиотеки, в данном случае

Multy-Threaded Debug DLL(\MDd).

Результат выбора типа библиотеки показан на рис.20.8 (по умолчанию).

368

Рис.20.8. Установка типа библиотеки времени выполнения

Подключение программных файлов осуществляется обычными средствами, рассмотренными, например, в теме № 17. Программный код каждого из подключенных файлов можно вывести (двойным щелчком мыши) в окно редактирования. Для примера выведем код файла stack.h. Результат подключения файлов stack.h/stack.c и queue.h/queue.c показан на рис. 20.9.

369

Рис. 20.9. Форма с подключенными файлами

После выполнения настроек компилятора необходимо выполнить настройки библиотекаря (Librarian) на вкладке после узла С/С++. Страница свойств библиотекаря содержит несколько настроек, из которых основной является имя создаваемой библиотеки. По умолчанию имя библиотеки совпадает с именем проекта. В этом случае следует оставить без изменения имеющиеся настройки закладки General узла Librarian. На закладке General в пункте Output File по умолчанию установлено $OutDir$(TargetName)$(TargetExt), что оставляем без изменения.

Открывающаяся страница свойств представлена на рис. 20.10.

370

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]