April 6th, 2020

Создание библиотеки классов (.lib)

Начало тут:
1. библиотека классов;
2. создание библиотеки классов (в тексте);
3. создание библиотеки классов (объектный файл).

Область применения: язык программирования C++, операционная система «Windows 7», среда разработки «Visual Studio Community 2017».

На сайте компании «Microsoft» есть пошаговое руководство по теме:
https://docs.microsoft.com/en-us/cpp/build/walkthrough-creating-and-using-a-static-library-cpp

Эта статья, призванная объяснять, по-моему, наоборот, всё запутывает. Я ее прочел, но пользоваться не стал.

Я уже писал, что файл .lib представляет из себя контейнер, в который помещаются один или несколько объектных файлов. Чтобы получить этот файл, в нашем примере при сборке должна быть выполнена следующая цепочка преобразований:

(mylib.h и mylib.cpp) → mylib.objmylib.lib

Как это можно сделать из среды «Visual Studio Community 2017»?

1) Запустить среду «Visual Studio Community 2017».

2) Создадим еще один пустой проект. (Пример названия проекта: Project3.)

3) Настроим проект для наших целей. Откроем окно страниц свойств проекта (подробнее в предыдущем посте). Убедимся, что меняем свойства для нужной конфигурации (Release) и платформы (Win32). В левом разделе следует выбрать пункт «Свойства конфигурации» — «Общие». В правом разделе меняем свойство «Тип конфигурации» со значения «Приложение (.exe)» на значение «Статическая библиотека (.lib)». Сохраняем исправления с помощью кнопки «ОК» в нижней части окна.

4) Добавляем в проект файлы mylib.h и mylib.cpp.

5) Запустить сборку проекта (конфигурация: Release, платформа: x86).

После сборки в папке проекта появится папка Release, в которую будет помещен файл .lib с реализацией нашей библиотеки. В нашем примере это будет файл Project3.lib. Я переименовал его в mylib.lib.

6) Распространяем библиотеку классов в виде файлов mylib.h (интерфейс) и mylib.lib (реализация).

Включение библиотеки классов в таком виде в другой проект происходит так же, как и включение библиотеки классов в виде файлов mylib.h и mylib.obj (объектный файл). См. подробности в предыдущем посте.

Файлы проекта: тут.