Visual Studio не видит мои подключенные заголовочные файлы
Создал пустой проект 'Demo' в Visual Studio 2008 и добавил в свое решение несколько существующих проектов. В файле main.cpp
, который находится в проекте 'Demo', я включил заголовочный файл "MyHeader.h" из другого проекта. Также добавил путь к заголовочным файлам в разделе "Инструменты/Параметры/VC++ директории/Заголовочные файлы". Однако IntelliSense выдает сообщение: "Файл MyHeader.h
не найден в текущей директории исходного файла или в путях системы сборки...".
Как можно исправить эту проблему?
5 ответ(ов)
Удалите файл .sdf, находящийся в директории вашего решения. Это всего лишь база данных Intellisense, и Visual Studio воссоздаст её в следующий раз, когда вы откроете данное решение. Эта база данных может быть повреждена, что приведёт к тому, что IDE не сможет находить необходимые элементы. Поскольку компилятор генерирует эту информацию автоматически в процессе работы, он не будет затронут.
Если вы выберете Проект
, а затем Все файлы
в меню, в обозревателе решений должны отобразиться все файлы, которые физически находятся в папке вашего проекта, но еще не включены в проект. Чтобы добавить файл, который вы хотите, просто щелкните правой кнопкой мыши по нему в обозревателе решений и выберите опцию для его включения.
Это произошло со мной только что, после завершения работы и перезагрузки компьютера. В итоге я понял, что архитектура каким-то образом изменилась с x64 на ARM.
В Visual Studio 2019, в моем случае, я скопировал файл заголовка в директорию проекта, рядом с другими файлами. Intellisense мог его видеть, но сборка завершалась неудачей. Логично, что файл на самом деле не был добавлен в проект. Я добавил его как существующий элемент, но на этом этапе Visual Studio все еще его не учитывала.
Решение:
- Закройте проект.
- Удалите директорию
.vs
. - Откройте проект снова.
Теперь Visual Studio воссоздает директорию со всеми необходимыми файлами, и она теперь может видеть включенный файл.
Если ваша IDE показывает, что не может найти подключаемые файлы, но компиляция проходит успешно, проблема заключается в том, что IntelliSense не полностью обновлён с учётом недавних изменений. На моём опыте это может произойти при подключении существующих проектов.
Удаление файла .sdf (базы данных IntelliSense), который создаётся в директории вашего решения, заставляет Visual Studio регенерировать его, так что он снова будет актуальным. Более простое решение — выполнить команду "очистка" проекта, хотя это может занять больше времени, так как всё будет сгенерировано заново.
В чем разница между #include <filename> и #include "filename"?
Как удалить элемент из std::vector<> по индексу?
`unsigned int` против `size_t`: когда и что использовать?
Какова разница между "new", "malloc" и "calloc" в C++?
Что означает && в конце сигнатуры функции (после закрывающей скобки)?