Ответы:
В проекте, в который вы хотите # включить файл заголовка из другого проекта, вам нужно будет добавить путь к файлу заголовка в раздел Дополнительные подключаемые каталоги в конфигурации проекта.
Чтобы получить доступ к конфигурации проекта:
Чтобы включить файл заголовка , просто напишите в коде следующее:
#include "filename.h"
Обратите внимание, что вам не нужно указывать здесь путь, потому что вы уже включили каталог в Дополнительные каталоги включения, поэтому Visual Studio будет знать, где его искать.
Если вы не хотите добавлять каждое местоположение файла заголовка в настройки проекта, вы можете просто включить каталог до определенной точки, а затем #include относительно этой точки:
// In project settings
Additional Include Directories ..\..\libroot
// In code
#include "lib1/lib1.h" // path is relative to libroot
#include "lib2/lib2.h" // path is relative to libroot
Если вы используете статические библиотеки (например, файл .lib), вам также необходимо добавить библиотеку во вход компоновщика, чтобы во время связывания символы могли быть связаны (в противном случае вы получите неразрешенный символ):
#include "proj2\include.h"
. Наличие нескольких проектов на одно решение кажется очень ориентированным на языки NET, поскольку они используются по-разному. Тем не менее, чтобы найти отличный способ преодолеть это для проектов C ++.
#include
не имеет ничего общего с проектами - он просто сообщает препроцессору: «Поместите сюда содержимое файла заголовка». Если вы укажете ему путь, указывающий на правильное местоположение (может быть относительный путь, например ../your_file.h), он будет включен правильно.
Однако вам нужно будет узнать о библиотеках (статических / динамических библиотеках), чтобы такие проекты были правильно связаны, но это другой вопрос.
Поскольку оба проекта относятся к одному и тому же решению, существует более простой способ включения файлов и компоновщика, как описано в https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp- проекты? view = vs-2019 :
#include "../libProject/libHeader.h"
).Вам необходимо указать путь к заголовкам в свойствах проекта, чтобы компилятор смотрел туда при попытке найти файл (ы) заголовка. Я не могу вспомнить точное местоположение, но посмотрите свойства проекта, и вы должны его увидеть.
Старайтесь избегать полных ссылок на пути в директиве #include, независимо от того, являются ли они абсолютными или относительными. Вместо этого добавьте расположение папки включения другого проекта в настройки вашего проекта. При необходимости используйте только вложенные папки в ссылках на пути. Таким образом, легче перемещать объекты, не обновляя код.
Расширяя ответ @Benav, я предпочитаю:
$(SolutionDir)
в дополнительные каталоги включенияТеперь вы можете включать заголовки из ваших проектов, на которые ссылаются, следующим образом:
#include "OtherProject/Header.h"
Ноты:
#include
s, но он устанавливает правильные зависимости сборки, которые вы, вероятно, захотите.