1. библиотека классов;
2. создание библиотеки классов (в тексте).
Область применения: язык программирования C++, операционная система «Windows 7», среда разработки «Visual Studio Community 2017».
В предыдущем посте я описал создание библиотеки классов в виде двух текстовых файлов, являющихся интерфейсом и реализацией библиотеки классов (
mylib.h
и mylib.cpp
соответственно).По разным причинам разработчики библиотеки классов могут не хотеть показывать текст реализации пользователю библиотеки классов (разработчику конечного приложения). В таких случаях реализация библиотеки классов может распространяться в виде объектного файла.
Ничего нового по сравнению с предыдущим постом делать не нужно. После сборки проекта (6-й пункт) в конфигурации Release для платформы x86 в папке проекта появилась папка Release с исполняемым файлом
Project1.exe
. Но кроме исполняемого файла там еще появились и другие файлы, в том числе объектные файлы .obj
. Нас интересует объектный файл mylib.obj
. Он содержит реализацию нашей библиотеки классов в двоичном виде.Таким образом, библиотека классов может в нашем случае распространяться в виде двух файлов —
mylib.h
(интерфейс) и mylib.obj
(реализация).Как может действовать разработчик конечного приложения, получив библиотеку классов в таком виде?
1) Запустить среду «Visual Studio Community 2017».
2) Создать еще один пустой проект (подробнее тут). (Пример названия проекта:
Project2
. Название Project1
у меня уже занято под проект из предыдущего поста.)3) Добавим в проект исходный файл конечного приложения. (В качестве такового я взял исходный файл
test_app.cpp
тестового приложения из предыдущего поста. То есть просто скопировал его в папку нашего нового проекта Project2
и затем добавил его в проект через обозреватель решений.)4) Копируем в папку нашего нового проекта
Project2
библиотеку классов в виде файлов mylib.h
и mylib.obj
.Заголовочный файл
mylib.h
компилятор найдет, благодаря его включению в начало исходного файла test_app.cpp
нашего конечного приложения:
#include "mylib.h" // интерфейс библиотеки классов
5) А вот объектный файл
mylib.obj
компоновщик сразу не найдет. Чтобы компоновщик нашел этот файл, нужно добавить его в свойствах (настройках) проекта.При этом важно, чтобы активная конфигурация нашего проекта совпадала с конфигурацией проекта, при которой был получен объектный файл
mylib.obj
. (В нашем примере это конфигурация Release для платформы x86.)Это можно сделать через обозреватель решений. В обозревателе решений следует найти ветку с названием проекта (в нашем случае —
Project2
). Не решения, а именно проекта! (Начинающие часто путают.) Далее — щелкнуть правой кнопкой мыши на название проекта в этой ветке и в открывшемся контекстном меню выбрать последний пункт — «Свойства». Откроется окно «Страницы свойств Project2».В этом окне сначала следует проверить, что сверху выбраны правильные конфигурация (в нашем случае — Release) и платформа (в нашем случае — Win32, это синоним x86). После этого в разделе слева следует выбрать пункт «Свойства конфигурации» — «Компоновщик» — «Ввод». И в разделе справа выбрать первый пункт в списке свойств — «Дополнительные зависимости». В это поле следует добавить название нашего объектного файла
mylib.obj
, включая его расширение. Чтобы закончить редактирование свойств проекта, нужно нажать на кнопку «ОК» в нижней части окна свойств проекта.6) Запустить сборку проекта (конфигурация: Release, платформа: x86).
После сборки в папке проекта появится папка Release, в которую будет помещен исполняемый файл. (В нашем примере это будет
Project2.exe
.) Его размер в точности совпадет с файлом Project1.exe
из предыдущего поста. Это логично, потому что и должны получиться полностью идентичные файлы, различающиеся только названием.7) Запуск исполняемого файла
Project2.exe
(подробнее тут).Результат должен совпадать с результатом из предыдущего поста (см. картинку).
Файлы проекта: тут.