Опубликован: 14.12.2010 | Уровень: для всех | Доступ: платный

Лекция 21: Программы на языке С при использовании статически подключаемой библиотеки

< Лекция 20 || Лекция 21: 12345 || Лекция 22 >

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

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

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

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

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

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

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

Тип используемой библиотеки времени выполнения выбирается на странице свойств [C/C++]|[Code?Generation]|[Runtime?Library]. Результат выбора типа библиотеки показан на рис. 20.8 (по умолчанию).

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

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

Подключение программных файлов осуществляется обычными средствами, рассмотренными, например, в "Программы на языке С, состоящие из нескольких файлов" .

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

Результат подключения файлов файлы stack.h/stack.c и queue.h/queue.c, показан на рис. 20.9.

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

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

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

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

Страница свойств Librarian – General – Output File

Рис. 20.10. Страница свойств Librarian – General – Output File

Настройка свойств Librarian завершается нажатием клавиш "Применить" и "OK".

После завершения настроек выполняется компиляция и сборка библиотеки. В процессе компиляции модули, входящие в состав библиотеки (файлы с расширением .c ), сначала обрабатываются препроцессором языка C, затем компилируются независимо друг от друга. В результате компиляции получается набор файлов с расширением .obj, содержащих скомпилированный код библиотечных функций. Затем полученный набор объектных файлов (с расширением .obj ) объединяется в библиотечный модуль (файл с расширением .lib ).

Процесс сборки проекта статической библиотеки запускается из пункта меню Build – Build containers. Результат выбора показан на рис. 20.11.

Запуск компиляции и сборки библиотеки

Рис. 20.11. Запуск компиляции и сборки библиотеки

В процессе сборки библиотеки компилятор и библиотекарь (Librarian) выводят в окно сообщений (Output) среды Visual Studio диагностическую информацию. Эти сообщения содержат результаты компиляции каждого из модулей, подключенных к проекту статической библиотеки, возможные предупреждения компилятора и конечную статистику (например, количество ошибок и предупреждений) сборки статической библиотеки.

Сообщение о результатах компиляции рассматриваемого примера показаны на рис. 20.12.

Окно с сообщением об успешной компиляции библиотеки

Рис. 20.12. Окно с сообщением об успешной компиляции библиотеки

В результате произведенной компиляции получаем папку с именем созданной библиотеки (containers), в которой в папке Debug располагается двоичный объектный библиотечный модульфайл с расширением .lib. Для данного случая это файл containers.lib.

< Лекция 20 || Лекция 21: 12345 || Лекция 22 >
Мухаммадюсуф Курбонов
Мухаммадюсуф Курбонов
Александр Соболев
Александр Соболев
Россия
Артем Полутин
Артем Полутин
Россия, Саранск