Visual Studio не поддерживает включение каталогов - PullRequest
20 голосов
/ 25 сентября 2010

Я был в такой ситуации довольно много раз, когда Visual Studio не соблюдает Дополнительные каталоги включения , когда речь идет о lib и header source files. Например, я только что скачал исходный код MyGUI и убедился, что каталоги включения были правильными. Я даже указывал им абсолютные пути, Visual Studio все еще жаловалась, что не может найти конкретные заголовочные файлы.

Кто-нибудь испытывает то же самое с проектами, и если да, есть ли решение этой проблемы? Blockquote

РЕДАКТИРОВАТЬ: Мои извинения за невозможность объяснить полностью. Я знаю, что библиотека и исходные файлы имеют разные каталоги включения. В проекте, который я получил, были правильные пути к каталогам для дополнительных включаемых каталогов и дополнительных библиотечных каталогов, но Visual Studio все равно не смог их правильно распознать. Я могу щелкнуть правой кнопкой мыши и открыть файл заголовка в Visual Studio, но при компиляции он все еще жалуется, что не может найти требуемые файлы заголовков. Я регулярно делаю проекты, опираясь на фреймворк, который я сам запрограммировал, поэтому я хорошо знаю, как устанавливать зависимости. Это, однако, второй раз, когда это происходит. Я не помню, какой сторонний проект я пытался скомпилировать в прошлый раз, но Visual Studio просто отказалась верить, что пути Additional Include Directories - это место, где нужно искать файлы заголовков. Я не уверен, как предоставить полную информацию об этой конкретной библиотеке (MyGUI), но я могу указать вам на веб-сайт, где вы можете скачать ее, чтобы проверить, сможет ли она найти файлы заголовков, которые включены в проект ( если он не компилируется, это нормально, и это, вероятно, из-за дополнительных зависимостей, но он должен, по крайней мере, иметь возможность находить файлы в общей папке, особенно когда я помещаю абсолютные пути в каталоги дополнительных включений)

Ответы [ 8 ]

39 голосов
/ 18 ноября 2015

Это случилось со мной однажды.Выяснилось несоответствие сборок Debug vs Release.Когда я модифицировал одну сборку, другая сборка компилировалась.Пожалуйста, установите обе сборки с одинаковыми включаемыми папками и посмотрите, работает ли он.Удачи.

4 голосов
/ 26 сентября 2010

Я нашел (наткнулся) на решение (я думаю).Это как-то связано с ограничением символов, установленным ОС.Хотя ограничение должно быть 260, для меня оно падает ниже 150, см. Это обсуждение и ссылки на него .Я скачал и распаковал файл на C:\Users\MyUserName\My Documents\Downloads\Downloads From Chrome\MyGui3.0... [и так далее].Некоторое время назад я научился не пытаться компилировать проекты под такими длинными путями, но на этот раз это полностью сорвалось с ума, поскольку VS вообще не дал мне предупреждения и указал мне в неправильном направлении.В любом случае, обрезка и вставка проекта в D:\ исправили проблему. Я не собираюсь отмечать ответ, пока кто-то не подтвердит это.

2 голосов
/ 25 сентября 2010

Можете ли вы уточнить это? Если я помню, в Visual Studio есть как минимум два места, где вы можете настроить это:

  1. За установку: Tools/Options/Projects and Solutions/VC++ Directories)
  2. За проект: Project/Properties/Configuration Properties/"C/C++"/General/Additional Include Directories

Если вы добавляете включаемые каталоги для каждого проекта (# 1), как я думаю, и затем пытаетесь включить их из другого проекта, это, очевидно, не сработает. Попробуйте добавить их на уровне установки и посмотрите, работает ли он.

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

1 голос
/ 28 ноября 2018

У меня та же проблема: не удается найти файл .lib, хотя я добавил дополнительный каталог include.

Из ответа Дополнительный каталог include в Visual studio 2015 не делает ', я пытался:

удалить файл .suo и перезапустить VS

Тогда это работает для меня.

1 голос
/ 25 сентября 2010

Если под lib-файлами вы имеете в виду библиотечные (.lib) файлы, местоположение каталога указывается не через C / C ++ / General / Additional Include Каталоги, а через Linker / General / Additional Library Directory.

Этологично, если вы думаете об этом.Параметры C / C ++ - это все параметры компиляции, параметры, связанные с компиляцией файлов .cpp и .h.Параметры компоновщика - это все параметры компоновки, параметры, связанные с компоновкой файлов .obj и .lib.

0 голосов
/ 07 июня 2019

Для меня проблема заключалась в том, что файл проекта .vcxproj был только для чтения , и после того, как я добавил свой каталог в «Дополнительные каталоги», файл проекта фактически не изменился.Я был удивлен, что VS не жаловался на то, что этот файл доступен только для чтения.

Так что после того, как я сделал этот файл доступным для записи, я смог скомпилировать свой проект.

0 голосов
/ 01 января 2018

У меня тоже была эта проблема.Как сказал sam - это строковое значение, содержащее путь к вашей инфраструктуре, должно быть одинаковым для конфигураций Debug и Release.Поэтому лучше всего выбрать «Конфигурация: Все конфигурации» и «Платформа: Все платформы» из двух контекстных контрольных списков в верхней части окна свойств проекта перед его вводом или копированием из адресной строки проводника Windows.

0 голосов
/ 01 декабря 2017

У меня были те же симптомы в моем проекте c ++.Навигация от заголовка к заголовку прошла нормально, но после переключения на исходный файл заголовка (скажем, foo.cpp), переход к #include <bar.cpp> в этом исходном файле не удался.Я получил следующую ошибку:

Файл 'bar.cpp' не найден ни в каталоге текущего исходного файла, ни в системных путях сборки.

После исследования я заметил, чтоПуть сборки системы, указанный в ошибке, не расширяется путями включения проекта.Другими словами: IntelliSense не знал, что исходный файл (foo.cpp) был частью проекта, и поэтому он не использовал пути включения проекта для поиска #include <bar.cpp>.

* 1012.* Исправлением для меня было создание файла intelliSense.cpp (имя файла не имеет значения), который является частью проекта, но исключен из сборки.Этот файл содержит включение для каждого исходного файла.Например:
#include <foo.cpp>
#include <bar.cpp>
...

Таким образом IntelliSense знает, что эти исходные файлы являются частью проекта, и поэтому будет использовать пути включения проекта для разрешения #includes в этих исходных файлах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...