Microsoft Visual Studio — интегрированная среда разработки компьютерных программ от Microsoft. В этом посте я рассказал о том, как настроить несколько проектов C++ в Visual Studio и как создать статическую библиотеку, которую можно использовать в нескольких проектах. Представьте ситуацию, что вы работаете над проектом инвестиционного анализа фондового рынка. В основном проекте под названием «Анализ» размещена программа, которая генерирует автоматические предложения о покупке или продаже акций на основе алгоритма. Однако алгоритм размещен в другом проекте под названием Engine, который является рабочей лошадкой для реализации алгоритма. В частности, анализ основного проекта создает исполняемый файл, связанный со статической библиотекой, скомпилированной из механизма проекта.
C:. └───Investment ├───Analysis │ └───src ├───bin │ └───intermediates └───Engine └───src
Рисунок 1. Древовидная директория полученного решения.
Вот процедура, которую я предпочитаю:
- Создать новый проект (в рамках решения). В меню выберите ФАЙЛ › Создать › Проект › Visual C++ › Общие › Пустой проект. В диалоговом окне в поле
Solution:
введите «Инвестиции», проектName:
«Анализ», родительский каталог решенияLocation:
(например, c:\DEV). И установите флажок «Создать каталог для решения». - Создайте и отредактируйте основной файл проекта. В Solution Explore щелкните значок «Показать все файлы». Щелкните правой кнопкой мыши значок проекта «Анализ», выберите «Добавить» > «Новый элемент» > «Файл C++ (.cpp)». В диалоговом окне в поле
Name:
введите «application.cpp», а в полеLocation:
введите C:\DEV\INVESTMENT\ANALYSIS\src. Я предпочитаю, чтобы файлы .cpp хранились в их собственной (исходный файл или, короче, src) папке. В конце этого поста я привожу для справки полный пример кода. - Убедитесь, что основной файл является нашим исполняемым файлом. В обозревателе решений щелкните правой кнопкой мыши значок проекта «Анализ». Выберите «Свойства» > «Общие» в разделе «Свойства конфигурации» > «
Configuration:
Все конфигурации» > «Platform:
Все платформы». Затем перейдите в «Свойства конфигурации» > «Общие» > «Параметры проекта по умолчанию» > «Тип конфигурации». Установите его на «приложение (.exe)». - (Необязательно) добавить курс в основную папку проекта. В обозревателе решений щелкните правой кнопкой мыши папку
src
, выберите Добавить › Класс. В диалоговом окне введитеClass Name:
(например, AClass). Установите флажок «Виртуальный деструктор». Перетащите файлы — «AClass.cpp» и «AClass.h» в нашем примере — в папкуsrc
. - Настроить каталог файлов. В обозревателе решений щелкните правой кнопкой мыши значок проекта «Анализ». Выберите «Свойства» > «Общие» в разделе «Свойства конфигурации» (опять же, обязательно установите
Configuration:
Все конфигурации >Platform:
Все платформы)Output Directory:
$(SolutionDir)bin\\$(Configuration)\,Intermediate Directory:
$(SolutionDir)bin\промежуточные\$(платформа)\$(конфигурация)\ - Создавайте вспомогательные проекты для статической библиотеки. Щелкните правой кнопкой мыши значок решения, чтобы выбрать «Добавить» > «Новый проект…» > «Visual C++» > «Кроссплатформенный» > «Пустой проект».
Name:
ДВИГАТЕЛЬ.Location:
C:\DEV\ИНВЕСТИЦИИ\ - Задайте свойства вспомогательного проекта для статической библиотеки. Щелкните правой кнопкой мыши значок «ДВИГАТЕЛЬ» и выберите «Свойства». В статусе для всех конфигураций и всех платформ перейдите в Свойства конфигурации › Общие › Параметры проекта по умолчанию › Тип конфигурации установлен на «Статическая библиотека (.lib)». Кроме того, повторите шаг 5 для этого вспомогательного проекта.
- Создайте и отредактируйте исходную библиотеку. Щелкните правой кнопкой мыши значок ENGINE › Добавить › Новый элемент › Файл C++ (.cpp) или файл заголовка (.h) › назначьте имя вновь созданному файлу › настройте
Location:
, например. C:\DEV\INVESTMENT\ENGINE\источник. - Включить библиотеку в основной проект. Щелкните правой кнопкой мыши значок «Анализ» (примечание: «Анализ» — наш основной проект). Перейдите в Свойства. В разделе «Свойства конфигурации» > «C/C++» > «Общие» > «Дополнительные каталоги включения», чтобы включить исходный каталог библиотеки. В нашем случае это C:\DEV\INVESTMENT\ENGINE\src
- Связать библиотеку с основным проектом. В обозревателе решений щелкните правой кнопкой мыши значок «Анализ», выберите «Добавить» › «Ссылка» › проверьте вспомогательный проект.
// ______________ Analysis.cpp _________________ #include <Windows.h> #include <iostream> #include "AClass.h" #include "Engine.h" using std::cout; using std::cin; int main() { SetConsoleTitle("console Output"); //Create an instance of the AClass class (instantiation) AClass object1; //Call the sayHello() function using the dot operator object1.SayHello(); Engine::EngineMessage(); cin.get(); return 0; } // ______________ AClass.h ____________________ #pragma once class AClass { public: AClass(); virtual ~AClass(); //Function declaration void SayHello(); }; // ______________ AClass.cpp __________________ #include <iostream> #include "AClass.h" using std::cout; using std::endl; AClass::AClass() { } AClass::~AClass() { } void AClass::SayHello() { cout << " Say hello from AClass!" << endl; system("PAUSE"); } // ______________ Engine.h ____________________ #pragma once namespace Engine { void EngineMessage(); } // ______________ Engine.cpp __________________ #include <iostream> #include "Engine.h" using std::cout; using std::cin; using std::endl; namespace Engine { void EngineMessage() { cout << endl; cout << " Say hello from Engine!" << endl; system("PAUSE"); } }