
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");
}
}