Всем здравствуйте.
Я очень новичёк, в Visual Studio 2005, и у меня есть вопрос:
Я создал solution, который включает в себя два проекта(MainProj и AdditionalProj) созданные на unmanaged C++.
Один главный второй вспомогоательный. В Additional описан в двух файлах(.h и .cpp) класс AdditionalClass.
Я хочу использовать его в главном проекте(MainProj).
Как это сделать?
Я добалял reference одного проетка на другой(как это делается в C#), но тут это ничего не дало.
Пробовал добавить #include "AdditionalClass.h", но компилятор говорит что не знает такого файла.
Помогите пожалуйста.
в С++ возможно следующее (на выходе):
1. программа (*.exe файл )
2. статическая библиотека (*.lib файл)
3. динамчическая библиотека (*.dll файл)
в VisualStudio проект может быть также этих трёх типов.
В вашем случае есть два проекта: первый *.exe файл, второй *.lib файл.
И первый зависит(т.е. используется код) от второго.
В этом случае вам нужно "удовлетворить" препроцессор компилятор и линковщик.
удовлетворение препроцессора:
1. установка папок в которых ищется включенный файл (см.также примечание)
1.1 для проекта: project->properties->C/C++->AdditionalIncludeDirectories
1.2. для всего что собирается студией menu tools->options->ProjectsAndSolutions->VC++Directories->ShowDirectories->include files->окно
удовлетворение линковщика:
project->project dependencies-> поставить галочку от чего он зависит
Примечание:
ступени сборки проекта:
1. сначала отрабатывает препроцессор
2. потом компилятор
3. затем линковщик
когда Вы делаете
#include "File.h"
то это директива препроцессору указывающая на то что нужно включить файл с именем "File.h" из текущего каталога (относительно файла в котором написано include) и если такого файла нет то препроцессор смотрит в "удовлетворение препроцессора: 1.1" и если нету то в "удовлетворение препроцессора: 1.2" и если нету то ошибка.
можно писать #include <File.h> в таком случае препроцессор не ищет в текущем каталоге и сразу приступает к поиску согласно следующему правилу.
P.S. никто не мешает делать так:
#include "../lib/File.h"
#include "
C:/File.h"
хотя вариант с абсолютными путями малопригоден
Здравствуйте, Feonyf.
Большое спасибо, это помогло.