Пошаговое руководство. Создание и использование статической библиотекиWalkthrough: Create and use a static library

В этом пошаговом руководстве описывается создание статической библиотеки (LIB-файла) для использования с приложениями C++.This step-by-step walkthrough shows how to create a static library (.lib file) for use with C++ apps. Статические библиотеки являются хорошим способом повторного использования кода.Using a static library is a great way to reuse code. Вместо того чтобы каждый раз реализовывать одни и те же подпрограммы для обеспечения той или иной функциональности в каждом создаваемом приложении, их можно создать единожды и затем вызывать из приложений.Rather than reimplementing the same routines in every app that requires the functionality, you write them one time in a static library and then reference it from the apps. Код, подключенный из статической библиотеки, становится частью вашего приложения — для использования кода не нужно устанавливать еще какой-либо файл.Code linked from a static library becomes part of your app—you don't have to install another file to use the code.

В этом пошаговом руководстве рассматриваются следующие задачи:This walkthrough covers these tasks:

Предварительные требованияPrerequisites

Для работы необходимо владеть основами языка C++.An understanding of the fundamentals of the C++ language.

Создание проекта статической библиотекиCreate a static library project

Инструкции по созданию проекта зависят от используемой версии Visual Studio.The instructions for how to create the project vary depending on your version of Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия.To see the documentation for your preferred version of Visual Studio, use the Version selector control. Он находится в верхней части оглавления на этой странице.It's found at the top of the table of contents on this page.

Создание проекта статической библиотеки в Visual Studio 2019To create a static library project in Visual Studio 2019

  1. В строке меню выберите Файл > Создать > Проект, чтобы открыть диалоговое окно Создание проекта.On the menu bar, choose File > New > Project to open the Create a New Project dialog box.

  2. В верхней части диалогового окна для параметра Язык установите значение C++ , для параметра Платформа — значение Windows, а для параметра Тип проекта — значение Библиотека.At the top of the dialog, set Language to C++, set Platform to Windows, and set Project type to Library.

  3. В отфильтрованном списке типов проектов выберите пункт Мастер классических приложений Windows, а затем нажмите кнопку Далее.From the filtered list of project types, select Windows Desktop Wizard, then choose Next.

  4. На странице Настроить новый проект введите MathLibrary в поле Имя проекта.In the Configure your new project page, enter MathLibrary in the Project name box to specify a name for the project. В поле Имя решения введите StaticMath.Enter StaticMath in the Solution name box. Нажмите кнопку Создать, чтобы открыть диалоговое окно Проект классического приложения Windows.Choose the Create button to open the Windows Desktop Project dialog.

  5. В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Статическая библиотека (.lib) .In the Windows Desktop Project dialog, under Application type, select Static Library (.lib).

  6. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, если он установлен.Under Additional options, uncheck the Precompiled header check box if it's checked. Установите флажок Пустой проект.Check the Empty project box.

  7. Нажмите кнопку ОК, чтобы создать проект.Choose OK to create the project.

Создание проекта статической библиотеки в Visual Studio 2017To create a static library project in Visual Studio 2017

  1. В строке меню щелкните Файл > Создать > Проект.On the menu bar, choose File > New > Project.

  2. В диалоговом окне Новый проект выберите Установленные > Visual C++ > Классическое приложение для Windows.In the New Project dialog box, select Installed > Visual C++ > Windows Desktop. На центральной панели выберите Мастер классических приложений Windows.In the center pane, select Windows Desktop Wizard.

  3. Укажите имя для проекта, например MathLibrary, в поле Имя.Specify a name for the project—for example, MathLibrary—in the Name box. Укажите имя для решения, например StaticMath, в поле Имя решения.Specify a name for the solution—for example, StaticMath—in the Solution Name box. Нажмите кнопку ОК .Choose the OK button.

  4. В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Статическая библиотека (.lib) .In the Windows Desktop Project dialog, under Application type, select Static Library (.lib).

  5. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, если он установлен.Under Additional Options, uncheck the Precompiled header check box if it's checked. Установите флажок Пустой проект.Check the Empty project box.

  6. Нажмите кнопку ОК, чтобы создать проект.Choose OK to create the project.

Создание проекта статической библиотеки в Visual Studio 2015To create a static library project in Visual Studio 2015

  1. В строке меню щелкните Файл > Создать > Проект.On the menu bar, choose File > New > Project.

  2. В диалоговом окне Новый проект выберите Установленные > Шаблоны > Visual C++ > Win32.In the New Project dialog box, select Installed > Templates > Visual C++ > Win32. В центральной области выберите Консольное приложение Win32.In the center pane, select Win32 Console Application.

  3. Укажите имя для проекта, например MathLibrary, в поле Имя.Specify a name for the project—for example, MathLibrary—in the Name box. Укажите имя для решения, например StaticMath, в поле Имя решения.Specify a name for the solution—for example, StaticMath—in the Solution Name box. Нажмите кнопку ОК .Choose the OK button.

  4. В мастере приложений Win32 нажмите кнопку Далее.In the Win32 Application Wizard, choose Next.

  5. На странице Параметры приложения в разделе Тип приложения выберите Статическая библиотека.In the Application Settings page, under Application type, select Static library. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок.Under Additional options, uncheck the Precompiled header checkbox. Чтобы создать проект, нажмите кнопку Готово.Choose Finish to create the project.

Добавление класса в статическую библиотекуAdd a class to the static library

Добавление класса в статическую библиотекуTo add a class to the static library

  1. Чтобы создать файл заголовка для нового класса откройте контекстное меню проекта MathLibrary в обозревателе решений, а затем выберите Добавить > Новый элемент.To create a header file for a new class, right-click to open the shortcut menu for the MathLibrary project in Solution Explorer, and then choose Add > New Item.

  2. В диалоговом окне Добавление нового элемента выберите пункт Visual C++ > Код.In the Add New Item dialog box, select Visual C++ > Code. В центральной области выберите Заголовочный файл (.h) .In the center pane, select Header File (.h). Укажите имя для файла заголовка, например MathLibrary.h, и нажмите кнопку Добавить.Specify a name for the header file—for example, MathLibrary.h—and then choose the Add button. Отобразится почти пустой файл заголовка.A nearly blank header file is displayed.

  3. Добавьте объявление класса с именем Arithmetic для выполнения обычных арифметических операций, таких как сложение, вычитание, умножение и деление.Add a declaration for a class named Arithmetic to do common mathematical operations such as addition, subtraction, multiplication, and division. Код должен выглядеть примерно так:The code should resemble:

    // MathLibrary.h
    #pragma once
    
    namespace MathLibrary
    {
        class Arithmetic
        {
        public:
            // Returns a + b
            static double Add(double a, double b);
    
            // Returns a - b
            static double Subtract(double a, double b);
    
            // Returns a * b
            static double Multiply(double a, double b);
    
            // Returns a / b
            static double Divide(double a, double b);
        };
    }
    
  4. Чтобы создать исходный файл для нового класса, откройте контекстное меню проекта MathLibrary в обозревателе решений, а затем выберите Добавить > Новый элемент.To create a source file for the new class, open the shortcut menu for the MathLibrary project in Solution Explorer, and then choose Add > New Item.

  5. В диалоговом окне Добавление нового элемента в центральной области выберите Файл C++ (.cpp) .In the Add New Item dialog box, in the center pane, select C++ File (.cpp). Укажите имя исходного файла, например MathLibrary.cpp, и нажмите кнопку Добавить.Specify a name for the source file—for example, MathLibrary.cpp—and then choose the Add button. Отобразится пустой исходный файл.A blank source file is displayed.

  6. Используйте этот исходный файл для реализации функций класса Arithmetic.Use this source file to implement the functionality for class Arithmetic. Код должен выглядеть примерно так:The code should resemble:

    // MathLibrary.cpp
    // compile with: cl /c /EHsc MathLibrary.cpp
    // post-build command: lib MathLibrary.obj
    
    #include "MathLibrary.h"
    
    namespace MathLibrary
    {
        double Arithmetic::Add(double a, double b)
        {
            return a + b;
        }
    
        double Arithmetic::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double Arithmetic::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double Arithmetic::Divide(double a, double b)
        {
            return a / b;
        }
    }
    
  7. Чтобы выполнить сборку статической библиотеки, выберите в строке меню команду Сборка > Собрать решение.To build the static library, select Build > Build Solution on the menu bar. В результате будет создана статическая библиотека MathLibrary.lib, которая может использоваться другими программами.The build creates a static library, MathLibrary.lib, that can be used by other programs.

    Примечание

    При выполнении сборки из командной строки Visual Studio программа собирается в два этапа.When you build on the Visual Studio command line, you must build the program in two steps. Сначала запустите cl /c /EHsc MathLibrary.cpp, чтобы скомпилировать код и создать объектный файл с именем MathLibrary.obj. (Команда cl вызывает компилятор Cl.exe, а параметр /c дает указание компилировать без компоновки.First, run cl /c /EHsc MathLibrary.cpp to compile the code and create an object file that's named MathLibrary.obj. (The cl command invokes the compiler, Cl.exe, and the /c option specifies compile without linking. Дополнительные сведения см. в разделе Параметр /c (компиляция без связывания). Во-вторых, запустите файл lib MathLibrary.obj, чтобы связать код и создать статическую библиотеку MathLibrary.lib.For more information, see /c (Compile Without Linking).) Second, run lib MathLibrary.obj to link the code and create the static library MathLibrary.lib. (Команда lib вызывает диспетчер библиотек, Lib.exe.(The lib command invokes the Library Manager, Lib.exe. Дополнительные сведения см. в разделе LIB Reference.)For more information, see LIB Reference.)

Создание консольного приложения C++, ссылающегося на статическую библиотекуCreate a C++ console app that references the static library

Создание консольного приложения C++, ссылающегося на статическую библиотеку, в Visual Studio 2019To create a C++ console app that references the static library in Visual Studio 2019

  1. В обозревателе решений щелкните правой кнопкой мыши узел верхнего уровня Решение StaticMath, чтобы открыть контекстное меню.In Solution Explorer, right-click on the top node, Solution 'StaticMath', to open the shortcut menu. Выберите пункты Добавить > Новый проект, чтобы открыть диалоговое окно Добавить новый проект.Choose Add > New Project to open the Add a New Project dialog box.

  2. В верхней части диалогового окна задайте для фильтра Тип проекта значение Консоль.At the top of the dialog, set the Project type filter to Console.

  3. В отфильтрованном списке типов проектов щелкните Консольное приложение, а затем нажмите кнопку Далее.From the filtered list of project types, choose Console App then choose Next. На следующей странице в поле Имя введите имя проекта MathClient.In the next page, enter MathClient in the Name box to specify a name for the project.

  4. Нажмите кнопку Создать, чтобы создать клиентский проект.Choose the Create button to create the client project.

  5. После создания консольного приложения будет создана пустая программа.After you create a console app, an empty program is created for you. Имя исходного файла будет совпадать с ранее выбранным именем.The name for the source file is the same as the name that you chose earlier. В этом примере он имеет имя MathClient.cpp.In the example, it's named MathClient.cpp.

Создание консольного приложения C++, ссылающегося на статическую библиотеку, в Visual Studio 2017To create a C++ console app that references the static library in Visual Studio 2017

  1. В обозревателе решений щелкните правой кнопкой мыши узел верхнего уровня Решение StaticMath, чтобы открыть контекстное меню.In Solution Explorer, right-click on the top node, Solution 'StaticMath', to open the shortcut menu. Выберите пункты Добавить > Новый проект, чтобы открыть диалоговое окно Добавить новый проект.Choose Add > New Project to open the Add a New Project dialog box.

  2. В диалоговом окне Добавление нового проекта выберите Установленные > Visual C++ > Классическое приложение для Windows.In the Add New Project dialog box, select Installed > Visual C++ > Windows Desktop. На центральной панели выберите Мастер классических приложений Windows.In the center pane, select Windows Desktop Wizard.

  3. Укажите имя для проекта, например MathClient, в поле Имя.Specify a name for the project—for example, MathClient—in the Name box. Нажмите кнопку ОК .Choose the OK button.

  4. В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Консольное приложение (EXE) .In the Windows Desktop Project dialog, under Application type, select Console Application (.exe).

  5. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, если он установлен.Under Additional Options, uncheck the Precompiled header check box if it's checked.

  6. Нажмите кнопку ОК, чтобы создать проект.Choose OK to create the project.

  7. После создания консольного приложения будет создана пустая программа.After you create a console app, an empty program is created for you. Имя исходного файла будет совпадать с ранее выбранным именем.The name for the source file is the same as the name that you chose earlier. В этом примере он имеет имя MathClient.cpp.In the example, it's named MathClient.cpp.

Создание консольного приложения C++, ссылающегося на статическую библиотеку, в Visual Studio 2015To create a C++ console app that references the static library in Visual Studio 2015

  1. В обозревателе решений щелкните правой кнопкой мыши узел верхнего уровня Решение StaticMath, чтобы открыть контекстное меню.In Solution Explorer, right-click on the top node, Solution 'StaticMath', to open the shortcut menu. Выберите пункты Добавить > Новый проект, чтобы открыть диалоговое окно Добавить новый проект.Choose Add > New Project to open the Add a New Project dialog box.

  2. В диалоговом окне Добавление нового проекта выберите Установленные > Visual C++ > Win32.In the Add New Project dialog box, select Installed > Visual C++ > Win32. В центральной области выберите Консольное приложение Win32.In the center pane, select Win32 Console Application.

  3. Укажите имя для проекта, например MathClient, в поле Имя.Specify a name for the project—for example, MathClient—in the Name box. Нажмите кнопку ОК .Choose the OK button.

  4. В диалоговом окне Мастер приложений Win32 нажмите кнопку Далее.In the Win32 Application Wizard dialog, choose Next.

  5. На странице Параметры приложения выберите в поле Тип приложения пункт Консольное приложение.On the Application Settings page, under Application type, make sure Console application is selected. В разделе Дополнительные параметры снимите флажок Предварительно откомпилированный заголовок, а затем установите флажок Пустой проект.Under Additional options, uncheck Precompiled header, then check the Empty Project checkbox. Чтобы создать проект, нажмите кнопку Готово.Choose Finish to create the project.

  6. Чтобы добавить исходный файл в пустой проект, откройте контекстное меню проекта MathClient в обозревателе решений, а затем выберите команду Добавить > Новый элемент.To add a source file to the empty project, right-click to open the shortcut menu for the MathClient project in Solution Explorer, and then choose Add > New Item.

  7. В диалоговом окне Добавление нового элемента выберите пункт Visual C++ > Код.In the Add New Item dialog box, select Visual C++ > Code. В центральной области выберите Файл C++ (.cpp) .In the center pane, select C++ File (.cpp). Укажите имя исходного файла, например MathClient.cpp, и нажмите кнопку Добавить.Specify a name for the source file—for example, MathClient.cpp—and then choose the Add button. Отобразится пустой исходный файл.A blank source file is displayed.

Использование функциональности из статической библиотеки в приложенииUse the functionality from the static library in the app

Использование функциональности из статической библиотеки в приложенииTo use the functionality from the static library in the app

  1. Для использования математических процедур из статической библиотеки необходимо сослаться на эту библиотеку.Before you can use the math routines in the static library, you must reference it. В обозревателе решений откройте контекстное меню проекта MathClient, а затем выберите команду Добавить > Ссылка.Open the shortcut menu for the MathClient project in Solution Explorer, and then choose Add > Reference.

  2. В диалоговом окне Добавление ссылки перечислены библиотеки, на которые можно создать ссылку.The Add Reference dialog box lists the libraries that you can reference. На вкладке Проекты перечислены проекты текущего решения и все библиотеки, на которые они ссылаются.The Projects tab lists the projects in the current solution and any libraries they reference. На вкладке Проекты установите флажок MathLibrary, а затем нажмите кнопку ОК.Open the Projects tab, select the MathLibrary check box, and then choose the OK button.

  3. Для создания ссылки на файл заголовка MathLibrary.h необходимо изменить путь к каталогам включаемых файлов.To reference the MathLibrary.h header file, you must modify the included directories path. В обозревателе решений щелкните правой кнопкой мыши проект MathClient, чтобы открыть контекстное меню.In Solution Explorer, right-click on MathClient to open the shortcut menu. Выберите пункт Свойства, чтобы открыть диалоговое окно Страницы свойств MathClient.Choose Properties to open the MathClient Property Pages dialog box.

  4. В диалоговом окне Страницы свойств MathClient в раскрывающемся списке Конфигурация выберите пункт Все конфигурации.In the MathClient Property Pages dialog box, set the Configuration drop-down to All Configurations. В раскрывающемся списке Платформа выберите пункт Все платформы.Set the Platform drop-down to All Platforms.

  5. Перейдите на страницу свойств Свойства конфигурации > C/C++ > Общие.Select the Configuration Properties > C/C++ > General property page. В свойстве Дополнительные каталоги включаемых файлов укажите путь к каталогу MathLibrary или найдите этот каталог.In the Additional Include Directories property, specify the path of the MathLibrary directory, or browse for it.

    Чтобы найти путь к каталогу, выполните указанные ниже действия.To browse for the directory path:

    1. Откройте раскрывающийся список значений свойства Дополнительные каталоги включаемых файлов, а затем выберите Изменить.Open the Additional Include Directories property value drop-down list, and then choose Edit.

    2. В диалоговом окне Дополнительные каталоги включаемых файлов дважды щелкните в верхней части текстового поля.In the Additional Include Directories dialog box, double-click in the top of the text box. Нажмите кнопку с многоточием ( ... ) в конце строки.Then choose the ellipsis button (...) at the end of the line.

    3. В диалоговом окне Выбор каталога перейдите на уровень вверх и выберите каталог MathLibrary.In the Select Directory dialog box, navigate up a level, and then select the MathLibrary directory. Затем нажмите кнопку Выбрать папку, чтобы сохранить выбор.Then choose the Select Folder button to save your selection.

    4. В диалоговом окне Дополнительные каталоги включаемых файлов нажмите кнопку ОК.In the Additional Include Directories dialog box, choose the OK button.

    5. В диалоговом окне Страницы свойств нажмите кнопку OK, чтобы сохранить изменения в проекте.In the Property Pages dialog box, choose the OK button to save your changes to the project.

  6. Теперь в этом приложении можно использовать класс Arithmetic, включив в код заголовок #include "MathLibrary.h".You can now use the Arithmetic class in this app by including the #include "MathLibrary.h" header in your code. Замените содержимое MathClient.cpp на следующий код:Replace the contents of MathClient.cpp with this code:

    // MathClient.cpp
    // compile with: cl /EHsc MathClient.cpp /link MathLibrary.lib
    
    #include <iostream>
    #include "MathLibrary.h"
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        std::cout << "a + b = " <<
            MathLibrary::Arithmetic::Add(a, b) << std::endl;
        std::cout << "a - b = " <<
            MathLibrary::Arithmetic::Subtract(a, b) << std::endl;
        std::cout << "a * b = " <<
            MathLibrary::Arithmetic::Multiply(a, b) << std::endl;
        std::cout << "a / b = " <<
            MathLibrary::Arithmetic::Divide(a, b) << std::endl;
    
        return 0;
    }
    
  7. Чтобы выполнить сборку исполняемого файла, выберите в строке меню команду Сборка > Собрать решение.To build the executable, choose Build > Build Solution on the menu bar.

Запуск приложенияRun the app

Запуск приложенияTo run the app

  1. Убедитесь в том, что проект MathClient выбран в качестве проекта по умолчанию.Make sure that MathClient is selected as the default project. Чтобы выбрать его, в обозревателе решений откройте контекстное меню проекта MathClient и выберите команду Назначить запускаемым проектом.To select it, right-click to open the shortcut menu for MathClient in Solution Explorer, and then choose Set as StartUp Project.

  2. Чтобы запустить проект, в строке меню выберите Отладка > Запуск без отладки.To run the project, on the menu bar, choose Debug > Start Without Debugging. Выходные данные должны выглядеть примерно так:The output should resemble:

    a + b = 106.4
    a - b = -91.6
    a * b = 732.6
    a / b = 0.0747475
    

См. такжеSee also

Пошаговое руководство: Создание и использование библиотеки DLL (C++)Walkthrough: Creating and Using a Dynamic Link Library (C++)
Классические приложения (Visual C++)Desktop Applications (Visual C++)