Iostream не указан путь поиска включаемых файлов
Только что установил Visual Studio 2019 в Windows 10, впервые использовал Visual Studio и столкнулся со следующей ошибкой: это базовая консольная программа hello world, которую я пытался запустить.
ошибка C1083: не удается открыть включаемый файл: 'corecrt.h': нет такого файла или каталога
1> Готовый строительный проект "ConsoleApplication2.vcxproj" - НЕУДАЧЕН.
Код серьезности Описание Состояние подавления строки файла проекта Предупреждение MSB8003 Свойство WindowsSDKDir не определено. Некоторые инструменты сборки могут не быть найдены. ConsoleApplication2 C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VC \ v160 \ Microsoft.CppBuild.targets 434
Я попытался найти эту ошибку на YouTube и, конечно, здесь, а также на официальном форуме Microsoft, но ничего не нашел.
Код выглядит нормально.
Сегодня я столкнулся с той же проблемой. Оказывается, я не проверял Win10SDK для экономии места на диске при установке.
Решение:
В VS перейдите в меню «Инструменты» => «Получить инструменты и компоненты» => установите Windows 10 SDK (10.XX.XX.XX) .
После установки запустите VS и откройте свой проект, щелкните правой кнопкой мыши свой проект ( НЕ Решение ) -> свойства-> Общие-> Версия Windows SDK, проверьте, что значение должно быть 10.0 вместо пустого. Тогда компиляция просто заработала.
Спасибо за это. Немного плохо, учитывая, что это дополнительный модуль? А зачем мне Win10, если я запускаю Win7?
Да, было бы неплохо, если бы это был обязательный модуль, или если бы вы отменили его выбор, выдавали предупреждение. Я предполагаю, что все SDK версии Windows объединены с SDK Windows 10.
У меня была такая же проблема, когда я установил Visual Studio 2019 в Windows7 и открыл проект, созданный в Visual Studio 2017 (ведьма не была установлена на этом компьютере). Чтобы решить проблему, я зашел в проект Properties -> General -> Windows SDK Version И изменил его с 10 на 8.1 .
У меня была такая же проблема, поэтому я подумал, что, возможно, заголовки находятся в другом каталоге, чем то, в котором программа ищет. Когда я начал искать файлы заголовков tge, их не существовало. Так что проблема, вероятно, в том, что iostream не существует.
Я исправил эту проблему, восстановив Windows SDK. Теперь все работает как положено.
Шаги:
- Перейти к Settings>Apps & Features .
- Нажмите Пакет разработки программного обеспечения для Windows - Windows 10.0.18362.1 . ( Примечание : номер версии может быть другим)
- Нажмите Изменить .
- Выберите Восстановить из вариантов.
- Нажмите Далее .
- Перезапустите VS и попробуйте запустить свой проект.
У меня такая же проблема, и оказалось, что я не установил Windows SDK. Это можно сделать, набрав «Установить Windows SDK» в строке поиска Visual Studio.
Есть установленная Студия 2015.
Добавил в PATH C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe
Создал тестовую программу(Hello World). При запуске cl test.cpp матерится:
Гугл посоветовал запустить скрипт C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32. Запустил. Нифига, ошибка осталась.
Вопрос: как все-таки запустить этот чертов компилятор из дефолтной командной строки?
- Вопрос задан более трёх лет назад
- 4972 просмотра
Простой 2 комментария
Действительно есть необходимость из дефолтной вызывать? Девелоперская преднастроенная не подойдёт? Если нет, то откройте её и посмотрите что запускается при старте, сделайте себе также.
Про батик почти правильно, но запускать надо "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" с соответствующим ключом. Посмотрите в ярлыках, про которые писал res2001, так как раз оно и запускается. Чтобы переименные среды сработали надо вызвать этот командный файл через call внутри одного командного файла с командой cl.exe (и прочими). Еще вариант - вызвать в одной строке две команды, сперва командный файл, потом, через & cl.exe.
В PATH нужно добавлять каталог (C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin), а не cl.exe
Но ошибка говорит, что у вас не указан путь поиска ВКЛЮЧАЕМЫХ файлов.
То есть сам cl.exe находит. Вам нужно добавить опцию /I или -I с указанием, где include файлы лежат
cl.exe -Ic:\src test.cpp
Со студией поставляется комплект командных сценариев, настраивающих окружение командной строки для работы компилятора. Достаточно командную строку запускать через эти сценарии. Ярлыки на эти сценарии находятся в меню Пуск в папке студии.
Например у меня для VS2017 есть такие:
x64 Native Tools Command Prompt for VS 2017
x86 Native Tools Command Prompt for VS 2017
Соответственно для 64битной и 32битной сборки приложений. В 2015 студии есть аналогичные, только название немного изменено.
Запускайте ком.строку через этот сценарий и все будет собираться.
неудобно потом в файловой системе блуждать. Так в любой директории Shift+ПКМ -> Открыть терминал в текущей директории.
Для основных проектов я вытащил несколько ярлыков на раб.стол и в рабочей папке ярлыка указал каталог проекта. Просто запускаешь с ярлыка, выполняется настройка среды и ты в папке проекта.
Для остального, да приходится командами менять текущий каталог.
Если немного заморочиться можно руками добавить аналогичный пункт в контекстное меню с предварительным запуском скрипта настройки среды.
Компиляция из cmd через cl.exe - задание необходимого окружения.
Чтобы задать в глобальное окружение системные переменные - добавьте к Path и создайте Include, LIB.
И поменяйте на ваши версии MSVC, Windows SDK и разрядность x86 или x64.
Чтобы проверить переменные - можно просто запустить со стартового меню - x64 Native Tools Command Prompt for VS 2019 и набрать "set path" или "set lib", или "set include".
Компилятор создает ошибку C1083, когда не удается найти требуемый файл. Эта ошибка имеет несколько возможных причин. Наиболее распространенными причинами являются неверный путь поиска include или отсутствующие или неправильно именованные файлы заголовков, но другие типы файлов и проблемы могут также вызвать C1083. Ниже приведены некоторые распространенные причины, по которым компилятор создает эту ошибку.
Проблемы с библиотекой сторонних производителей и vcpkg
если вы видите эту ошибку при попытке настроить библиотеку стороннего производителя в рамках сборки, рассмотрите возможность использования vcpkg, диспетчера пакетов C++ для установки и сборки библиотеки. vcpkg поддерживает большой и растущей список библиотек сторонних производителейи задает все свойства конфигурации и зависимости, необходимые для успешной сборки в рамках проекта.
8 Answers 8
You could also run the vcvars32.bat file from the directory C:\Program Files\Microsoft Visual Studio 8\VC\bin (this is in your path) prior to your cl command.
vcvars32 calls C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat which sets up the required environment for compiling and linking.
The environment variables are INCLUDE , LIB , and PATH .
The compiler looks for header files in the INCLUDE path during compile, and libraries are fetched from the LIB path during link.
i ran vcvars32 as you said and the windows.h is not a problem anymore. i dont understand that if i have the path in environment variables why it didnt work unless i run that. Do i have to run that everytime i open a commandline prior to compiling. it also wants to know where Gl.h is which is included in my path as well but its not finding it. C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl
For me, with Visual Studio 2017,
is the command to use before compiling with cl .
Here is the documentation.
When you started the command line, did you run the included command line shortcut that comes with the Visual Studio setup? This will set the correct environment variables for you so that the compilation will work correctly.
You've added your INCLUDE paths to your PATH environment variable. Use vcvars32.bat as the others have suggested.
In your project folder, open a PowerShell window and run:
Your path variable might be too long. Windows can’t take more than 1023 characters in the PATH environment variable.
I had the same issue getting the
and after running the C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build>vcvars64.bat cmd/batch script would get the
error message. From here, and other posts on that page, I suspected that the Windows 10 SDK package must be installed. After installation and running the vcvars64.bat script from the path mentioned above, the problem was solved.
P.S. As explained here, an alternative to manually finding and running the above cmd/batch script, you may just do + Q and search for Developer Command Prompt for . , in my case it is Developer Command Prompt for VS 2022 .
Я предполагаю, что ваш путь включения включает каталог включения VC (в программных файлах). Однако при установке ВК вы выбрали родные файлы?
Привет, Дэвид, это то, что у меня есть в моем пути включения: Program files (x86)> Microsoft Visual Studio 10.0> VC> include> srv.h
Поэтому, когда мы обычно кодируем на C/C++, обычный стандарт, которому нужно следовать, - не писать «используя пространство имен XXX», чтобы избежать путаницы, когда кто-то отлаживает код. Вместо этого мы напрямую используем имя пространства имен и вызываем его библиотечную функцию. например std::cout, std::cin, std::vector и т. д.
Использование *.h для любого заголовочного файла рекомендуется только для внешних библиотек стандартного C++, поэтому, если вы включаете стандартную библиотеку C/C++, избегайте использования ".h" в качестве суффикса.
Открытие всего пространства имен и, кроме того, включение стандартного заголовка звучит как беспорядок. Я бы проверил другие ответы.
Некоторые вещи, которые вы должны проверить:
Проверьте включаемую папку в вашей версии VS (в " C:\Program Files\Microsoft Visual Studio xx.x\VC\include " проверьте файл, который вы включаете, iostream , убедитесь, что он есть).
Проверьте свои проекты Включить каталоги в
> Свойства > Свойства конфигурации > Каталоги VC++ > Включить Каталоги – (это должно выглядеть так: $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include; )
Убедитесь, что вы выбрали правильный проект для этого кода ( File > New > Project > Visual C++ > Win32 Console Application )
Убедитесь, что в ваших файлах кода нет , VS не поддерживает это (в том же проекте проверьте другие файлы кода, файлы .cpp и .h и удалить).
Убедитесь, что у вас не более одной функции main() в вашем файлы кода проекта (в том же проекте проверьте другие файлы кода, файлы .cpp и .h на наличие main() функции и удалите ее или замените другим именем ).
Некоторые вещи, которые вы могли бы попробовать использовать:
- Исключите using namespace std; из функции main() и поместите ее после директивы include.
- Используйте std::cout без using namespace std; .
@ Secko: что мне проверить в этих строках: проверьте папку include в вашей версии VS. Проверьте свои проекты. Включите каталоги в > Свойства > Свойства конфигурации > Каталоги VC++ > Включить каталоги. Убедитесь, что вы выбрали правильный проект для этого кода (консольное приложение). Убедитесь, что у вас нет нигде. в ваших файлах кода (VS этого не поддерживает). Убедитесь, что в ваших файлах кода проекта нет более одной функции main(). я действительно новичок
Вышеупомянутое сработало для меня. Ниже не было:
Это также не удалось:
(Для всех проходящих) Если это произойдет с вами, отключите предварительно скомпилированные заголовки.
Скорее всего, вам не хватает $(IncludePath) в свойствах->Каталоги VC++->Включить каталоги. Добавление этого должно сделать iostream и другие снова видимыми. Вероятно, вы удалили его по ошибке при настройке программы.
Возможно, ваш компилятор и ресурсы, установленные вокруг него, были как-то неполными. Я рекомендую переустановить ваш компилятор: после этого он должен работать.
Я пробовал несколько раз. Тот же результат. Я рассматриваю возможность использования другого компилятора. Пожалуйста, не могли бы вы предложить кого-нибудь?
Если ваши включаемые каталоги правильно указаны в листе свойств проекта VC++ -> Свойства конфигурации -> Каталоги VC++ -> Включить каталоги. Путь указан в макросе $(VC_IncludePath). В моем VS 2015 это оценивается как: "C:\Program Файлы (x86)\Microsoft Visual Studio 14.0\VC\include"
Это сделало это для меня.
Вот консольный проект C++ win32!
Теперь вот консольный проект c++ CLR!
Другие вещи, которые вы узнаете из отладки, чтобы добавить во избежание ошибок
Убедитесь, что у вас есть Desktop Development with C++ installed. У меня возникла та же проблема, потому что у меня была установлена только универсальная разработка платформы Windows.
Быстрое исправление для небольших программ:
В моем случае мой VS2015 установлен без выбора C++ package , а VS2017 установлен с C++ package . Если я использую VS2015 , открытый проект C++ покажет эту ошибку, а использование VS2017 не будет ошибкой.
Если вы создали переменную среды с именем IncludePath, попробуйте переименовать ее в другое.
Это имя переопределит $(IncludePath) в свойствах проекта.
У меня тоже была эта проблема, и я использовал этот код (до main();) в vs 2022, и все получилось:
Я получил эту ошибку, когда создал «Пустое» консольное приложение в Visual Studio 2015. Я заново создал приложение, оставив флажок «Пустой» не отмеченным, он добавил все необходимые библиотеки.
Указано неверное имя файла
При вводе имени файла допущена ошибка. Например, примененная к объекту директива
может не найти файл, который вы хотели. Большинство файлов заголовков стандартной библиотеки C++ не имеют расширения h. . Чтобы устранить эту проблему, убедитесь, что указано правильное имя файла, как в следующем примере:
Возможно, файл заблокирован или используется
Если для изменения или доступа к файлу используется другая программа, файл может быть заблокирован. Попробуйте закрыть файл в другой программе. иногда другая программа может быть Visual Studio сама по себе при использовании параметров параллельной компиляции. Если отключить параметр параллельной сборки, то эта ошибка исчезнет, а это проблема. Эта проблема также может быть вызвана другими системами параллельной сборки. Будьте внимательны при задании зависимостей файлов и проектов, чтобы порядок сборки был правильным. В некоторых случаях рекомендуется создать промежуточный проект для принудительного создания последовательности зависимостей для общего файла, который может быть создан несколькими проектами. Иногда антивирусные программы временно блокируют недавно измененные файлы для проверки. Если возможно, рассмотрите возможность исключения каталогов сборки проекта из антивирусного сканера.
Файл не включен в путь поиска включаемых файлов
Это указывает компилятору искать файл в том же каталоге, который содержит исходный файл, а затем искать в других местах, заданных средой сборки. Если кавычки содержат абсолютный путь, компилятор выполняет поиск файла только в этом расположении. Если кавычки содержат относительный путь, компилятор выполняет поиск файла в каталоге относительно исходного каталога.
Если имя заключено в угловые скобки,
Если включаемые файлы находятся в другом каталоге относительно исходного каталога и в директивах Include используется относительный путь, то вместо угловых скобок следует использовать двойные кавычки. Например, если файл myheader.h заголовка находится в подкаталоге именованных заголовков проекта, в этом примере не удается найти файл и вызывается C1083:
но этот пример работает:
Дополнительные причины
Вы установили пакет SDK или библиотеку стороннего производителя, но после установки пакета SDK или библиотеки не открывали новое окно командной строки разработчика. Если пакет SDK или библиотека добавляет файлы в путь поиска включаемых файлов, может потребоваться открыть новое окно командной строки разработчика, чтобы получить эти изменения переменных среды.
Файл использует управляемый код, но параметр /clr компилятора не указан. Дополнительные сведения см. в разделе /clr (компиляция среды CLR).
Файл компилируется с использованием другого /analyze параметра компилятора, чем используется для предварительной компиляции заголовков. При предварительной компиляции заголовков для проекта все должны использовать одни и те же /analyze Параметры. дополнительные сведения см. в разделе /analyze (Code Analysis).
файл или каталог был создан подсистема Windows для Linux, учитывается регистр в каждом каталоге, и указанный регистр пути или файла не соответствует регистру пути или файла на диске.
Файл, каталог или диск доступен только для чтения.
Visual Studio или средства командной строки не имеют достаточных разрешений для чтения файла или каталога. это может произойти, например, когда файлы проекта имеют разные права владения, чем процесс, выполняемый Visual Studio или программ командной строки. иногда эту ошибку можно устранить, запустив Visual Studio или командную строку разработчика от имени администратора.
Недостаточно дескрипторов файлов. Закройте часть приложений и повторите компиляцию. Эта ситуация маловероятна в обычных условиях. Однако она может возникать при построении крупных проектов на компьютере с ограниченной физической памятью.
Предкомпилированные заголовки еще не скомпилированы
Если проект настроен для использования предварительно скомпилированных заголовков, необходимо создать соответствующие .pch файлы, чтобы можно было скомпилировать файлы, использующие содержимое заголовка. например, pch.cpp файл ( stdafx.cpp в Visual Studio 2017 и более ранних версий) автоматически создается в каталоге проекта для новых проектов. Сначала необходимо скомпилировать этот файл, чтобы создать предкомпилированные файлы заголовков. В типичном проекте процесса сборки это выполняется автоматически. Дополнительные сведения см. в разделе Создание предкомпилированных файлов заголовков.
Пример
В следующем примере создается ошибка C1083, если файл "test.h" заголовка не существует в исходном каталоге или в пути поиска include.
Сведения о том, как создавать проекты C/C++ в интегрированной среде разработки или в командной строке, а также сведения о настройке переменных среды см. в разделе проекты и сборки систем.
I am trying to run a program called minimal.c. When I type at the command line:
I have set all the paths:
I have gone and made sure windows.h is in the directory. I'm setting the path too. It's in C:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include .
I have Visual Studio 2005.
I have exhausted all possibilities. Any ideas?
Файл находится в проекте, но не в пути поиска включаемых файлов
Чтобы устранить эту проблему, исправьте путь, используемый компилятором для поиска включаемого или импортируемого файла. В новом проекте используются пути поиска include по умолчанию. Может потребоваться изменить путь поиска include, чтобы добавить каталог для проекта. При компиляции в командной строке добавьте путь к переменной среды include или /I параметр компилятора, чтобы указать путь к файлу.
чтобы задать путь к каталогу включения в Visual Studio, откройте диалоговое окно страницы свойств проекта. выберите VC++ каталоги в разделе свойства конфигурации в левой области, а затем измените свойство включаемые каталоги . дополнительные сведения о каталогах для отдельных пользователей и проектов, поиск которых выполняется компилятором в Visual Studio, см. в разделе страница свойств VC++ directories. Дополнительные сведения о параметре компилятора см. в /I разделе /I (дополнительные каталоги включаемых данных).
Не задана среда командной строки INCLUDE или LIB
Если компилятор вызывается из командной строки, для указания путей поиска часто используются переменные среды. Если путь поиска, описанный в переменной среды include или lib , задан неправильно, может быть сформирована ошибка C1083. Мы настоятельно рекомендуем использовать ярлык командной строки разработчика, чтобы задать базовую среду для сборок с командной строкой. Дополнительные сведения см. в разделе сборка C/C++ в командной строке. Дополнительные сведения об использовании переменных среды см. в разделе инструкции. Использование переменных среды в сборке.
Включена неправильная версия имени файла
Читайте также: