Visual C ++: # включить файлы из других проектов в том же решении - PullRequest
107 голосов
/ 02 марта 2009

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

Ответы [ 4 ]

191 голосов
/ 02 марта 2009

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

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

Для доступа к конфигурации проекта:

  1. Щелкните правой кнопкой мыши проект и выберите Свойства.
  2. Выберите Свойства конфигурации-> C / C ++ -> Общие.
  3. Задайте путь в разделе «Дополнительные каталоги включения».

Как включить

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

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

  1. Щелкните правой кнопкой мыши проект и выберите Свойства.
  2. Выберите Свойства конфигурации-> Linker-> Input
  3. Войдите в библиотеку в разделе Дополнительные зависимости.
4 голосов
/ 02 марта 2009

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

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

2 голосов
/ 02 марта 2009

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

0 голосов
/ 02 марта 2009

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

...