Visual Studio не имеет права включать каталоги

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

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

EDIT: Приношу свои извинения за то, что вы не смогли полностью объяснить. Я знаю, что библиотеки и исходные файлы имеют разные каталоги include. Проект, который я получил, имел правильные пути к каталогам для дополнительных каталогов Include и дополнительных библиотек, но Visual Studio все еще не смог их правильно распознать. Я могу щелкнуть правой кнопкой мыши и открыть файл заголовка в Visual Studio, но при компиляции он все еще жалуется, что не может найти требуемые файлы заголовков. Я регулярно делаю проекты, опираясь на рамки, которые я сам запрограммировал, поэтому я хорошо знаком с настройками зависимостей. Однако это второй случай, когда это происходит. Я не помню, какой третий проект, который я пытался скомпилировать в прошлый раз, но Visual Studio просто отказался поверить, что пути Additional Include Directories - это то, где он должен искать файлы заголовков. Я не уверен, как предоставить полную информацию об этой конкретной библиотеке (MyGUI), но я могу указать вас на веб-сайт, где вы можете загрузить его, чтобы проверить, может ли он найти заголовочные файлы, которые включены в проект ( если он не компилируется, это нормально, и, вероятно, из-за дополнительных зависимостей, но он должен по крайней мере иметь возможность находить файлы в общей папке, особенно когда я помещаю абсолютные пути в дополнительные каталоги Include)

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

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

  • Per-installation: Tools/Options/Projects and Solutions/VC++ Directories)
  • Per-project: Project/Properties/Configuration Properties/"C/C++"/General/Additional Include Directories

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

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

Ответ 4

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

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

Ответ 6

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

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

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

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

#include <foo.cpp>
#include <bar.cpp>
...

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

Ответ 7

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

Ответ 8

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

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