Visual studio не видит include файлы
Компилятор создает ошибку C1083, когда не удается найти требуемый файл. Эта ошибка имеет несколько возможных причин. Наиболее распространенными причинами являются неверный путь поиска include или отсутствующие или неправильно именованные файлы заголовков, но другие типы файлов и проблемы могут также вызвать C1083. Ниже приведены некоторые распространенные причины, по которым компилятор создает эту ошибку.
Указано неверное имя файла
При вводе имени файла допущена ошибка. Например, примененная к объекту директива
может не найти файл, который вы хотели. Большинство файлов заголовков стандартной библиотеки C++ не имеют расширения h. . Чтобы устранить эту проблему, убедитесь, что указано правильное имя файла, как в следующем примере:
Файл не включен в путь поиска включаемых файлов
Это указывает компилятору искать файл в том же каталоге, который содержит исходный файл, а затем искать в других местах, заданных средой сборки. Если кавычки содержат абсолютный путь, компилятор выполняет поиск файла только в этом расположении. Если кавычки содержат относительный путь, компилятор выполняет поиск файла в каталоге относительно исходного каталога.
Если имя заключено в угловые скобки,
Если включаемые файлы находятся в другом каталоге относительно исходного каталога и в директивах Include используется относительный путь, то вместо угловых скобок следует использовать двойные кавычки. Например, если файл myheader.h заголовка находится в подкаталоге именованных заголовков проекта, в этом примере не удается найти файл и вызывается C1083:
но этот пример работает:
Проблемы с библиотекой сторонних производителей и vcpkg
если вы видите эту ошибку при попытке настроить библиотеку стороннего производителя в рамках сборки, рассмотрите возможность использования vcpkg, диспетчера пакетов C++ для установки и сборки библиотеки. vcpkg поддерживает большой и растущей список библиотек сторонних производителейи задает все свойства конфигурации и зависимости, необходимые для успешной сборки в рамках проекта.
Файл находится в проекте, но не в пути поиска включаемых файлов
Чтобы устранить эту проблему, исправьте путь, используемый компилятором для поиска включаемого или импортируемого файла. В новом проекте используются пути поиска include по умолчанию. Может потребоваться изменить путь поиска include, чтобы добавить каталог для проекта. При компиляции в командной строке добавьте путь к переменной среды include или /I параметр компилятора, чтобы указать путь к файлу.
чтобы задать путь к каталогу включения в Visual Studio, откройте диалоговое окно страницы свойств проекта. выберите VC++ каталоги в разделе свойства конфигурации в левой области, а затем измените свойство включаемые каталоги . дополнительные сведения о каталогах для отдельных пользователей и проектов, поиск которых выполняется компилятором в Visual Studio, см. в разделе страница свойств VC++ directories. Дополнительные сведения о параметре компилятора см. в /I разделе /I (дополнительные каталоги включаемых данных).
Не задана среда командной строки INCLUDE или LIB
Если компилятор вызывается из командной строки, для указания путей поиска часто используются переменные среды. Если путь поиска, описанный в переменной среды include или lib , задан неправильно, может быть сформирована ошибка C1083. Мы настоятельно рекомендуем использовать ярлык командной строки разработчика, чтобы задать базовую среду для сборок с командной строкой. Дополнительные сведения см. в разделе сборка C/C++ в командной строке. Дополнительные сведения об использовании переменных среды см. в разделе инструкции. Использование переменных среды в сборке.
Возможно, файл заблокирован или используется
Если для изменения или доступа к файлу используется другая программа, файл может быть заблокирован. Попробуйте закрыть файл в другой программе. иногда другая программа может быть Visual Studio сама по себе при использовании параметров параллельной компиляции. Если отключить параметр параллельной сборки, то эта ошибка исчезнет, а это проблема. Эта проблема также может быть вызвана другими системами параллельной сборки. Будьте внимательны при задании зависимостей файлов и проектов, чтобы порядок сборки был правильным. В некоторых случаях рекомендуется создать промежуточный проект для принудительного создания последовательности зависимостей для общего файла, который может быть создан несколькими проектами. Иногда антивирусные программы временно блокируют недавно измененные файлы для проверки. Если возможно, рассмотрите возможность исключения каталогов сборки проекта из антивирусного сканера.
Включена неправильная версия имени файла
Предкомпилированные заголовки еще не скомпилированы
Если проект настроен для использования предварительно скомпилированных заголовков, необходимо создать соответствующие .pch файлы, чтобы можно было скомпилировать файлы, использующие содержимое заголовка. например, pch.cpp файл ( stdafx.cpp в Visual Studio 2017 и более ранних версий) автоматически создается в каталоге проекта для новых проектов. Сначала необходимо скомпилировать этот файл, чтобы создать предкомпилированные файлы заголовков. В типичном проекте процесса сборки это выполняется автоматически. Дополнительные сведения см. в разделе Создание предкомпилированных файлов заголовков.
Дополнительные причины
Вы установили пакет SDK или библиотеку стороннего производителя, но после установки пакета SDK или библиотеки не открывали новое окно командной строки разработчика. Если пакет SDK или библиотека добавляет файлы в путь поиска включаемых файлов, может потребоваться открыть новое окно командной строки разработчика, чтобы получить эти изменения переменных среды.
Файл использует управляемый код, но параметр /clr компилятора не указан. Дополнительные сведения см. в разделе /clr (компиляция среды CLR).
Файл компилируется с использованием другого /analyze параметра компилятора, чем используется для предварительной компиляции заголовков. При предварительной компиляции заголовков для проекта все должны использовать одни и те же /analyze Параметры. дополнительные сведения см. в разделе /analyze (Code Analysis).
файл или каталог был создан подсистема Windows для Linux, учитывается регистр в каждом каталоге, и указанный регистр пути или файла не соответствует регистру пути или файла на диске.
Файл, каталог или диск доступен только для чтения.
Visual Studio или средства командной строки не имеют достаточных разрешений для чтения файла или каталога. это может произойти, например, когда файлы проекта имеют разные права владения, чем процесс, выполняемый Visual Studio или программ командной строки. иногда эту ошибку можно устранить, запустив Visual Studio или командную строку разработчика от имени администратора.
Недостаточно дескрипторов файлов. Закройте часть приложений и повторите компиляцию. Эта ситуация маловероятна в обычных условиях. Однако она может возникать при построении крупных проектов на компьютере с ограниченной физической памятью.
Пример
В следующем примере создается ошибка C1083, если файл "test.h" заголовка не существует в исходном каталоге или в пути поиска include.
Сведения о том, как создавать проекты C/C++ в интегрированной среде разработки или в командной строке, а также сведения о настройке переменных среды см. в разделе проекты и сборки систем.
Я создал пустой "демонстрационный" проект в Visual Studio 2008 и добавил некоторые существующие проекты в свое решение. Включен "Файл Myheader.h " (заголовок другого проекта) в main.cpp-файл, который находится в "Demo". Также добавлен путь к заголовочным файлам в разделе" Tools/Option/VC++ Directory/Include files". Но intellisense говорит: "файл 'MyHeader.h ' не найден в каталоге текущего исходного файла или в системных путях сборки. "
Как проблема может быть исправлена? Спасибо.
Если вы выберите Project а то All Files в меню все файлы должны отображаться в обозревателе решений, которые физически находятся на карте проекта, но еще не включены в проект. Если вы щелкните правой кнопкой мыши файл, который хотите добавить в Обозреватель решений, вы можете включить его.
удалить .sdf-файл, который находится в каталоге решения. Это просто база данных Intellisense, и Visual Studio воссоздаст ее при следующем открытии этого решения. Эта БД может быть повреждена и привести к тому, что IDE не сможет найти вещи, и поскольку компилятор генерирует эту информацию для себя на лету, это не повлияет.
Если это так, что только IDE указывает, что он не может найти включенные файлы, но компиляция успешна, проблема просто в том, что IntelliSense не полностью в курсе последних изменений. Это может произойти именно при включении существующих проектов, по моему собственному опыту. Удаление .sdf-файл (= база данных IntelliSense), созданный в каталоге решения, заставляет Visual Studio восстанавливать его, чтобы он снова был обновлен. Просто делать "чистый", вероятно, будет делать то же самое, но занимает больше времени, так как все будут сгенерированы снова.
Я бы никогда не рекомендовал буквы жесткого диска в любом аспекте ваших файлов проекта; либо использовать относительные пути, макросы, переменные среды или некоторые сочетания дерева для любой постоянной ситуации. Однако в этом случае я работаю в некоторых временных проектах, где абсолютные пути были необходимы в краткосрочной перспективе. Не имея возможности щелкнуть правой кнопкой мыши, чтобы открыть файлы, было очень неприятно, и, надеюсь, это поможет другим.
попробуйте добавить файл заголовка в файлы вашего проекта. (щелкните правой кнопкой мыши проект - > добавить существующий файл).
Если visual studio говорит, что вы пропустите какой-то файл в текущей папке исходного файла, есть одно решение, которое я использовал. Просто щелкните правой кнопкой мыши файл, который вы хотите добавить, и выберите Open Document , если он действительно не существует, то вы должны увидеть что-то вроде cannot find file in the source file path = "somewhere in your computer" , тогда вы можете сначала добавить исходный файл в этот путь и посмотреть, работает ли он.
Это случилось со мной только что, после выключения и перезагрузки компьютера. В конце концов я понял, что архитектура каким-то образом была изменена на ARM из x64.
по моему опыту, с VS2010, когда include-файлы не могут быть найдены во время компиляции, выполняя очистку, тогда build обычно устраняет проблему. Не так уж редко редактор может открыть файл include, а затем компилятор объявить, что он не может найти этот самый файл, даже когда он открыт на экране!
Я пытаюсь создать решение в Visual Studio Community 2017, но я продолжаю получать ошибку"не удается открыть файл include: 'stdio.h' ". Я прочитал несколько подобных вопросов, но все еще не могу решить эту проблему. Похоже на С stdio.h файл вызывается в stdafx.h. Ниже приведены более подробные сведения. Есть предложения? (Я еще не могу вставлять изображения, поэтому, пожалуйста, нажмите на ссылки для скриншотов.)
подробности: Windows 10
Сообщество Visual Studio 2017 V.15.2 (26430.6)
-- Установленная разработка рабочего стола с C++ (скриншот: список установка)
Шаг 1: Я написал знаменитую программу Hello World на C++.
Шаг 2: Я нажал на Build > Build Solution.
: 'С stdio.h': нет такого файла или каталога. Полная Ошибка:
детали устранения неполадок / вещи, которые я пробовал:
- свойства конфигурации > каталоги VC++
Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath); - скриншот: Обозреватель решений (файлы в проекте)
код stdafx.cpp:
код stdafx.h:
столкнулся с проблемой отсутствует stdlib.h и stdio.h (и, возможно, больше) после установки сообщества VS2017 на новый компьютер и переноса решения с VS2013 на VS2017.
теперь мои проекты строят без проблемы.
обратите внимание,что вам может потребоваться сделать проект стартовым проектом для переориентации.
существует три способа решить эту проблему.
Переустановите Visual Studio
Это также сработало для меня, потому что я понял, что, возможно, что-то не так с моим Windows SDK. Я использовал Windows 10, но с Windows SDK 8.1. Вы можете иметь эту проблему.
действия: открыть установщик Visual Studio > нажмите на трехстрочную строку меню > Удалить > перезагрузить компьютер > открыть установщик Visual Studio > Установите то, что вы хотите, но убедитесь, что вы устанавливаете только последнюю версию Windows SDK 10, а не несколько или 8.1.
на случай, если вы не хотите поднимать Windows SDK до Windows 10 (например, вы можете работать над проектом с открытым исходным кодом, где решение не ваше), вы можете решить эту проблему в проекте Windows SDK 8.1, перейдя Tools -> Get Tools and Features. -> Individual Compontents tab и установка отдельных компонентов "Windows 8.1 SDK" (под SDK, библиотеками и фреймворками) и "Windows Universal CRT SDK" (под Comiplers, инструментами сборки и временем выполнения):
У меня была аналогичная проблема после обновления моего VS2017. Проект построен хорошо, но много ошибок, когда код был воспитан в Редакторе. Даже попытался переустановить VS. Я смог решить его, установив параметр "игнорировать стандартные пути включения" в Yes. Попытка построить решение с большим количеством ошибок. Вернулся и установил параметр нет. После восстановления моя проблема исчезла.
У меня была та же проблема с созданием проекта VS 2013 с Visual Studio 2017 IDE. Решением было установить правильный " Platformtoolset v120 (Visual Studio 2013). Для этого должен быть установлен Windows SDK 8.1. Если вы хотите использовать Platformtoolset v141 (Visual Studio 2017), должен быть Windows SDK 10. Platformtoolset можно выбрать в диалоговом окне свойств проекта: общие - > Platformtoolset
в последнее время я не устанавливал никаких новых расширений, я работал над тем, что когда-либо у меня было.
там что еще я могу сделать?
цитировать. "Эта проблема из-за повреждения кэша MEF. Установка расширения обратной связи (или установка любого расширения) приведет к недействительности кэша, заставляя VS перестраивать его."
чтобы получить ответ здесь, на той же странице, что и вопрос: пользователи должны установить (или удалить) расширение Visual Studio, так как это заставит перестроить кэш MEF. В связанной статье предлагается установить Средство Обратной Связи Microsoft Visual Studio 2013 расширение, которое я сделал, и это сработало, но любое расширение установлено через Инструменты, Расширения и обновления меню, вероятно, сделает эту работу.
Я думаю, что причина этого может были связаны с чрезмерной антивирусной программой, но я не могу сказать наверняка.
скопируйте и вставьте папки и файлы в расположение проекта для интеграции модуля проекта и создайте проект, даже если пространство имен имеет правильное. Это способ решить
файл / папка не отображается правильно, поэтому щелкните правой кнопкой мыши неправильный видимый файл / папка и нажмите кнопку Включить в проект
построить проект - > если какая-либо ошибка возникает, то это как пространство имен может быть ошибкой, потому что копия из одного проект в другой проект или тот же проект с другим местоположением, чтобы проверить его
Если ошибка типа Build action 'Page' не поддерживается определенной комбинацией целей проекта.
пойти и решить дальнейшие шаги
откройте Обозреватель решений и нажмите кнопку "Показать все файлы", он покажет файлы, которые были в вашем проекте, и вы не смогли их увидеть. Затем, если вы хотите включить их в свой проект, выберите папку и щелкните ее правой кнопкой мыши и выберите Включить в проект.
I created an empty 'Demo' project in Visual Studio 2008 and added some existing projects to my solution. Included "MyHeader.h" (other project's header) in main.cpp file which is in 'Demo'. Also added header files' path in "Tools/Option/VC++ Directories/Include files" section. But intellisense says: "File MyHeader.h not found in current source file's directory or in build system paths. "
How the problem can be fixed?
does only intellisense give these error (i.e. does the normal build run fine)? then I would try to stop visual studio (possibly remove .suo/.sdf files for the affected projects), restart vs
15 Answers 15
Delete the .sdf file that is in your solution directory. It's just the Intellisense database, and Visual Studio will recreate it the next time you open that solution. This db can get corrupted and cause the IDE to not be able to find things, and since the compiler generates this information for itself on the fly, it wouldn't be affected.
With VS2017 I found Browse.VC.db and Solution.VC.db in project_dir/.vs/project_name/v15/ and deleted these files. Intellisense was then able to correclty recreate its db.
With VS2019: Close VS and delete the hidden .vs directory in the project directory. Then compile again. Works for me.
With VS2019 and CUDA headers: helped to delete Browse and Solution VC dbs only, like suggested before.
If you choose Project and then All Files in the menu, all files should be displayed in the Solution Explorer that are physically in your project map, but not (yet) included in your project. If you right click on the file you want to add in the Solution Explorer, you can include it.
This happened to me just now, after shutting down and restarting the computer. Eventually I realised that the architecture had somehow been changed to ARM from x64.
If it is the case that only the IDE indicates that it cannot find included files, but compiling is successful, the issue is simply that IntelliSense is not fully up to date with recent changes. This can happen specifically when including existing projects, in my own experience. Deleting the .sdf file (= IntelliSense database) that is generated in your solution directory forces Visual Studio to regenerate it, so that it is up to date again. Just doing a "clean" will probably do the same thing, but takes more time since everything will be generated again then.
I know this is an older question, but none of the above answers worked for me. In my case, the issue turned out to be that I had absolute include paths but without drive letters. Compilation was fine, but Visual Studio couldn't find an include file when I right-clicked and tried to open it. Adding the drive letters to my include paths corrected the problem.
I would never recommend hard-coding drive letters in any aspect of your project files; either use relative paths, macros, environment variables, or some mix of the tree for any permanent situation. However, in this case, I'm working in some temporary projects where absolute paths were necessary in the short term. Not being able to right-click to open the files was extremely frustrating, and hopefully this will help others.
In Visual Studio 2019 in my case I copied a header file into the project directory, just near the other files. Intellisense could see it, but the build failed. Fair enough, it wasn't actually added to the project. I added it as existing item but this is the point that Visual Studio still didn't account for it.
Solution:
- Close the project.
- Delete the .vs directory.
- Reopen the project. Now Visual Studio recreates the directory with everything in it and it can now see the included file.
In my experience, with VS2010, when include files can't be found at compile time, doing a clean, then build usually fixes the problem. It's not that rare for the editor to be able to open an include file and then the compiler to announce that it can't find that very file, even when it is open on the screen!
If the visual studio says that you miss some file in the current source file folder, there is one solution that i used. Just right click the file you want to add and choose Open Document , if it really doesn't exist, then you should see something like cannot find file in the source file path = "somewhere in your computer" , then what you could do is the add your source file into that path first and see if it works.
I had this issue after upgrading to Visual Studio 2019 from 2015. It would compile the project fine but Intellisense and the IDE couldn't find any header files.
The project only had valid configuration for Win32/Debug. Include paths were not setup correctly for other environments. Even though Visual Studio displayed the current environment as Win32/Debug, Intellisense must have been using something else.
Changing the current environment to x64/Release, and then back to Win32/Debug fixed it.
Try adding the header file to your project's files. (right click on project -> add existing file).
@RandolphCarter he is talking about intellisense not the compiler. I am aware that this does not help the compiler. What the compiler needs is the setting in "Tools/Option/VC++ Directories/Include files" that he has already set.
Adding the headers helps intellisense? weird, shouldn't compiler and intellisense use the same options?
Thankfully, 2010 and beyond addressed this, and many other issues with IntelliSense. Still not perfect, but better.
Here's how I solved this problem.
- Right click all the files in Solutions Explorer and Click on Include in Project in all the files you want to include.
I encountered this issue, but the solutions provided didn't directly help me, so I'm sharing how I got myself into a similar situation and temporarily resolved it.
I created a new project within an existing solution and copy & pasted the Header and CPP file from another project within that solution that I needed to include in my new project through the IDE. Intellisense displayed an error suggesting it could not resolve the reference to the header file and compiling the code failed with the same error too.
After reading the posts here, I checked the project folder with Windows File Explorer and only the main.cpp file was found. For some reason, my copy and paste of the header file and CPP file were just a reference? (I assume) and did not physically copy the file into the new project file.
I deleted the files from the Project view within Visual Studio and I used File Explorer to copy the files that I needed to the project folder/directory. I then referenced the other solutions posted here to "include files in project" by showing all files and this resolved the problem.
It boiled down to the files not being physically in the Project folder/directory even though they were shown correctly within the IDE.
Please Note I understand duplicating code is not best practice and my situation is purely a learning/hobby project. It's probably in my best interest and anyone else who ended up in a similar situation to use the IDE/project/Solution setup correctly when reusing code from other projects - I'm still learning and I'll figure this out one day!
Читайте также: