Пошаговое руководство. Создание и использование статической библиотеки

В этом пошаговом руководстве описывается создание статической библиотеки (LIB-файла) для использования с приложениями C++. Статические библиотеки являются хорошим способом повторного использования кода. Вместо повторного выполнения одних и тех же подпрограмм в каждом приложении, требующем функциональных возможностей, напишите их один раз в статической библиотеке, а затем сослаться на них из приложений. Код, связанный со статической библиотекой, становится частью приложения. Вам не нужно устанавливать другой файл для использования кода.

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

Предварительные условия

Понимание основ языка C++.

Создание проекта статической библиотеки

Инструкции по созданию проекта зависят от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.

Чтобы создать проект статической библиотеки в Visual Studio:

  1. В строке меню выберите "Создать файл>>Project, чтобы открыть диалоговое окно "Создание нового project".

  2. В верхней части диалогового окна для параметра Язык установите значение C++, для параметра Платформа — значение Windows, а для параметра Тип проекта — значение Библиотека.

  3. В отфильтрованном списке типов проектов выберите Windows Desktop Wizard, а затем нажмите кнопку Далее.

  4. На странице Настроить новый проект введите MathLibrary в поле Имя проекта. В поле Имя решения введите StaticMath. Нажмите кнопку Создать, чтобы открыть диалоговое окно Проект рабочего стола Windows.

  5. В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Статическая библиотека (.lib).

  6. В разделе Дополнительные параметры снимите флажок Предварительно скомпилированные заголовки, если он установлен. Выберите пустой проект.

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

Создание проекта статической библиотеки в Visual Studio 2017 г.:

  1. В строке меню выберите Файл >Создать >Проект.

  2. В диалоговом окне "Создать проект" выберите "Установленные>Visual C++>Windows Desktop". На центральной панели выберите Мастер рабочего стола Windows.

  3. Укажите имя проекта, например MathLibrary, в поле "Имя ". Укажите имя решения, например StaticMath, в поле "Имя решения ". Выберите OK.

  4. В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Статическая библиотека (.lib).

  5. В разделе "Дополнительные параметры" снимите флажок предварительно скомпилированного заголовка , если он выбран. Выберите пустой проект.

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

Чтобы создать проект статической библиотеки в Visual Studio 2015:

  1. В строке меню выберите Файл >Создать >Проект.

  2. В диалоговом окне Создание проекта выберите Установленные>шаблоны>Visual C++>Win32. В центральной области выберите Консольное приложение Win32.

  3. Укажите имя проекта, например MathLibrary, в поле "Имя ". Укажите имя решения, например StaticMath, в поле "Имя решения ". Выберите OK.

  4. В мастере приложений Win32 нажмите кнопку Далее.

  5. На странице Параметры приложения в разделе Тип приложения выберите Статическая библиотека. В разделе "Дополнительные параметры" снимите флажок предварительно скомпилированного заголовка . Чтобы создать проект, нажмите кнопку Готово.

Добавление класса в статическую библиотеку

Чтобы добавить класс в статическую библиотеку, выполните следующие действия.

  1. Создайте файл заголовка для нового класса. В Обозреватель решений щелкните правой кнопкой мыши MathLibrary, чтобы открыть контекстное меню проекта. Щелкните Добавить>Новый элемент.

  2. В диалоговом окне "Добавление нового элемента" выберите Visual C++>Code. В центральной области выберите Заголовочный файл (.h). Укажите имя файла заголовка, например MathLibrary.h, а затем нажмите кнопку "Добавить". Отобразится почти пустой файл заголовка.

  3. Добавьте объявление класса с именем Arithmetic для выполнения обычных арифметических операций, таких как сложение, вычитание, умножение и деление. Код должен выглядеть примерно так:

    // 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 в Обозреватель решений, а затем нажмите кнопку "Добавить>новый элемент".

  5. В диалоговом окне "Добавление нового элемента" в центральной области выберите файл C++ (.cpp). Укажите имя исходного файла, например MathLibrary.cpp. Затем выберите Добавить. Отобразится пустой исходный файл.

  6. Используйте этот исходный файл для реализации функций класса Arithmetic. Код должен выглядеть примерно так:

    // 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. Чтобы выполнить сборку статической библиотеки, выберите в строке меню команду Сборка>Собрать решение. Сборка создает статическую библиотеку MathLibrary.lib, которую могут использовать другие программы.

    Примечание.

    При выполнении сборки из командной строки Visual Studio программа собирается в два этапа.

    1. Выполните компиляцию cl /c /EHsc MathLibrary.cpp кода и создайте файл объекта с именем MathLibrary.obj. Команда cl вызывает компилятор, Cl.exeи /c параметр указывает компиляцию без связывания. Дополнительные сведения см. в разделе /c (компиляция без связывания).
    2. Выполните команду lib MathLibrary.obj , чтобы связать код и создать статическую библиотеку MathLibrary.lib. Команда lib вызывает диспетчер библиотек, Lib.exe. Дополнительные сведения см. в справочнике по LIB.

Создание консольного приложения C++, ссылающегося на статическую библиотеку

Чтобы создать консольное приложение C++ со ссылкой на статическую библиотеку в Visual Studio:

  1. В Обозревателе решений щелкните правой кнопкой на верхнем узле — Решение "StaticMath", чтобы открыть контекстное меню. Выберите пункты Добавить>Новый проект, чтобы открыть диалоговое окно Добавить новый проект.

  2. В верхней части диалогового окна задайте для фильтра Тип проекта значение Консоль.

  3. В отфильтрованном списке типов проектов щелкните Консольное приложение, а затем нажмите кнопку Далее. На следующей странице введите MathClient в качестве имени проекта.

  4. Нажмите кнопку "Создать", чтобы создать клиентский проект.

    После того как вы создадите консольное приложение, для вас будет создана пустая программа. Имя исходного файла будет совпадать с ранее выбранным именем. В этом примере он имеет имя MathClient.cpp.

Создание консольного приложения C++, ссылающегося на статическую библиотеку в Visual Studio 2017:

  1. В Обозревателе решений щелкните правой кнопкой мыши по верхнему узлу решение "StaticMath", чтобы открыть контекстное меню. Выберите пункты Добавить>Новый проект, чтобы открыть диалоговое окно Добавить новый проект.

  2. В диалоговом окне "Добавление нового Project" выберите "Установить>Visual C++>Windows Desktop". На центральной панели выберите Мастер рабочего стола Windows.

  3. Укажите имя для проекта, например MathClient, в поле Имя. Нажмите кнопку ОК.

  4. В диалоговом окне Проект классического приложения Windows в разделе Тип приложения выберите Консольное приложение (EXE).

  5. В разделе "Дополнительные параметры" снимите флажок предварительно скомпилированного заголовка , если он выбран.

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

  7. После того как вы создадите консольное приложение, для вас будет создана пустая программа. Имя исходного файла будет совпадать с ранее выбранным именем. В этом примере он имеет имя MathClient.cpp.

Создание консольного приложения C++, ссылающегося на статическую библиотеку в Visual Studio 2015:

  1. В Обозреватель решений щелкните правой кнопкой мыши на верхнем узле, Solution "StaticMath", чтобы открыть контекстное меню. Выберите пункты Добавить>Новый проект, чтобы открыть диалоговое окно Добавить новый проект.

  2. В диалоговом окне "Добавление нового Project" выберите "Установить>Visual C++>Win32". В центральной области выберите Консольное приложение Win32.

  3. Укажите имя для проекта, например MathClient, в поле Имя. Нажмите кнопку ОК.

  4. В диалоговом окне Мастер приложений Win32 нажмите кнопку Далее.

  5. На странице Параметры приложения выберите в поле Тип приложения пункт Консольное приложение. В разделе «Дополнительные параметры» снимите флажок «Предварительно скомпилированные заголовки», а затем выберите «Пустой проект». Чтобы создать проект, нажмите кнопку Готово.

  6. Чтобы добавить исходный файл в пустой проект, щелкните правой кнопкой мыши контекстное меню проекта MathClient в Обозреватель решений, а затем нажмите кнопку "Добавить>новый элемент".

  7. В диалоговом окне "Добавление нового элемента" выберите Visual C++>Code. В центральной области выберите Файл C++ (.cpp). Укажите имя исходного файла, например MathClient.cpp, и нажмите кнопку Добавить. Отобразится пустой исходный файл.

Использование функциональности из статической библиотеки в приложении

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

  1. Подключите статическую библиотеку перед использованием содержащихся в ней математических функций. Откройте контекстное меню проекта MathClient в Обозреватель решений и нажмите кнопку "Добавить>ссылку".

  2. В диалоговом окне "Добавить ссылку" перечислены библиотеки, на которые можно ссылаться. На вкладке Проекты перечислены проекты текущего решения и все библиотеки, на которые они ссылаются. Откройте вкладку "Проекты" , выберите MathLibrary и нажмите кнопку "ОК".

  3. Измените путь к включенным каталогам, чтобы ссылаться на файл заголовка MathLibrary.h . В Обозреватель решений щелкните правой кнопкой мыши MathClient, чтобы открыть контекстное меню. Выберите свойства , чтобы открыть диалоговое окно "Страницы свойств MathClient ".

  4. В диалоговом окне "Страницы свойств MathClient" задайте для параметра "Конфигурация" значение "Все конфигурации". Задайте для Платформа значение Все платформы.

  5. Перейдите на страницу свойств Свойства конфигурации>C/C++>Общие. В свойстве Дополнительные каталоги включаемых файлов укажите путь к каталогу MathLibrary или найдите этот каталог.

    Чтобы найти путь к каталогу, выполните указанные ниже действия.

    1. Откройте раскрывающийся список значений свойства Дополнительные каталоги включаемых файлов, а затем выберите Изменить.

    2. В диалоговом окне "Дополнительные каталоги включения" дважды щелкните в верхней части текстового поля. Нажмите кнопку с многоточием (...) в конце строки.

    3. В диалоговом окне "Выбор каталога " перейдите вверх по уровню и выберите каталог MathLibrary . Затем нажмите кнопку Выбрать папку, чтобы сохранить выбор.

    4. В диалоговом окне «Дополнительные каталоги включения» нажмите кнопку «ОК».

    5. В диалоговом окне "Страницы свойств" нажмите кнопку "ОК ", чтобы сохранить изменения в проекте.

  6. Теперь в этом приложении можно использовать класс Arithmetic, включив в код заголовок #include "MathLibrary.h". Замените содержимое MathClient.cpp на следующий код:

    // 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. Чтобы выполнить сборку исполняемого файла, выберите в строке меню команду Сборка>Собрать решение.

Выполнить приложение

Чтобы запустить приложение, выполните следующие действия.

  1. Убедитесь в том, что проект MathClient выбран в качестве проекта по умолчанию. Чтобы выбрать этот проект, щелкните правой кнопкой мыши MathClient в Обозревателе решений, чтобы открыть контекстное меню, а затем выберите Назначить запускаемым проектом.

  2. В строке меню выберите "Запуск отладки>без отладки" , чтобы запустить проект. Выходные данные должны выглядеть примерно так:

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

См. также

Пошаговое руководство. Создание и использование библиотеки DLL (C++)