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