Visual С++: # включить файлы из других проектов в одном решении

Я работаю над игрой с использованием Visual С++. У меня есть некоторые компоненты в отдельных проектах и ​​заданы зависимости проекта. Как мне # включить заголовочный файл из другого проекта? Я понятия не имею, как использовать классы из одного проекта в другом.

Ответ 1

Настройки для компилятора

В проекте, где вы хотите # включить заголовочный файл из другого проекта, вам нужно будет добавить путь к файлу заголовка в раздел Дополнительные каталоги Include в конфигурации проекта.

Чтобы получить доступ к конфигурации проекта:

  • Щелкните правой кнопкой мыши проект и выберите "Свойства".
  • Выберите Свойства конфигурации → C/С++ → Общие.
  • Задайте путь в разделе Дополнительные каталоги Include.

Как включить

Чтобы включить заголовочный файл, просто напишите в коде код:

#include "filename.h"

Обратите внимание, что здесь нет необходимости указывать путь, потому что вы уже включили каталог в дополнительные каталоги Include, поэтому Visual Studio будет знать, где его искать.

Если вы не хотите добавлять каждое расположение файла заголовка в параметры проекта, вы можете просто добавить директорию до точки, а затем # включить по отношению к этой точке:

// 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 файл), вам также нужно будет добавить библиотеку к вводу компоновщика, чтобы во время привязки символы могли быть связаны (в противном случае вы получите неразрешенный символ):

  • Щелкните правой кнопкой мыши проект и выберите "Свойства".
  • Выберите Свойства конфигурации- > Linker- > Input
  • Войдите в библиотеку под дополнительными зависимостями.

Ответ 2

#include не имеет ничего общего с проектами - он просто сообщает препроцессору "поместить содержимое файла заголовка здесь". Если вы укажете путь, который указывает на правильное местоположение (может быть относительный путь, например.. /your _file.h), он будет включен правильно.

Однако вам нужно будет узнать о библиотеках (статических/динамических библиотеках), чтобы правильно связать такие проекты, но этот еще один вопрос.

Ответ 3

Вам нужно установить путь к заголовкам в свойствах проекта, чтобы компилятор выглядел там, пытаясь найти заголовочный файл (ы). Я не могу вспомнить точное местоположение, но смотрю, что свойства проекта, и вы должны увидеть его.

Ответ 4

Попробуйте избежать ссылок на полный путь в директиве #include, независимо от того, являются ли они абсолютными или относительными. Вместо этого добавьте расположение другой проектной папки в свои настройки проекта. При необходимости используйте только вложенные папки в ссылках на пути. Таким образом, легче перемещать вещи, не обновляя свой код.

Ответ 5

Поскольку оба проекта находятся под одним и тем же решением, для включаемых файлов и компоновщика существует более простой способ, как описано в https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-. проекты? view = vs-2019:

  1. #include "../libProject/libHeader.h" может быть записано в относительном пути (например, #include "../libProject/libHeader.h").
  2. Для компоновщика щелкните правой кнопкой мыши "Ссылки", нажмите "Добавить ссылку" и выберите другой проект.