Не работает include в visual studio
Я видел в каком-то посте, что «файл заголовка не является частью стандарта C ++, поэтому не переносится» и его следует избегать ». Но я думаю, что это полезно в соревновательном программировании.
Есть ли способ избежать этой ошибки?
Да: не используйте нестандартные файлы заголовков, которые предоставляются только GCC, а не компилятором Microsoft.
Существует ряд заголовков, которые стандарт C ++ требует от каждого компилятора, например и . Но реализация этих заголовков в конкретном компиляторе может полагаться на другие нестандартные заголовки, которые также поставляются с этим компилятором, и является одним из них.
Думайте о стандартных заголовках (например, ) как об «общедоступном» интерфейсе, а о материалах, зависящих от компилятора (как и все в bits/ ), как о «частной» реализации. Вам не следует полагаться на детали реализации, специфичные для компилятора, если вы хотите, чтобы ваша программа была переносимой для других компиляторов - или даже для будущих версий того же компилятора.
Если вам нужен заголовок, включающий все стандартные заголовки, достаточно легко написать свой собственный.
Установите последнюю версию MinGW. Вот версия 6.3.0. Найдите руководство по установке здесь.
Затем скопируйте папку бит из . C: \ MinGW \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ mingw32 \ bits
В . (VS2019) C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ VC \ Tools \ MSVC \ 14.27.29110 \ include
Обратите внимание, что это будет «Сообщество» / «Профессионал» в зависимости от установки VS и лицензирования.
Я отвечу за Enterprise 2015, версия 4.8.03761, обновление 3.
Когда вы устанавливали кодовые блоки, также был установлен MinGW ((Min) минималистичный (G) Сборник компиляторов GNU (GCC) для (W) Windows). Или вы можете установить его отдельно.
Я считаю, что эта проблема связана с тем, что Visual Studio не может найти биты / stdc ++. H в своем каталоге Include (Project -> YourProject Properties -> Configuration Properties -> VC ++ Directories -> Include Directories -> нажмите стрелку раскрывающегося списка -> -> Оценочное значение).
Вам нужно перейти в этот каталог и вставить всю папку бит из вашей установки MinGW, моя была в (C: \ MinGW \ lib \ gcc \ mingw32 \ 8.2.0 \ include \ c ++ \ mingw32).
Когда это было сделано, с моей стороны не было никаких ошибок. Надеюсь, этот ответ поможет любому, кто хочет решить эту проблему.
Чтобы использовать препроцессор bits/stdc++.h в Visual Studio, вам необходимо загрузить файл stdc++.h по указанной ниже ссылке.
Это нестандартный файл заголовка, который, как известно, является частью libstdc ++, который обычно поставляется с GCC. Однако VS поставляется с собственной реализацией STL от Microsoft, которая не содержит такого файла. Я бы рекомендовал прекратить его использовать и вместо этого включить необходимые стандартные заголовки, такие как , , , и т. Д.
I am trying to build a solution on Visual Studio Community 2017, but I keep getting the error "Cannot open include file: 'stdio.h' ".
I've read through several similar questions, but I still can't fix this problem. It looks like the stdio.h file is called in the stdafx.h file. Below are more details. Any suggestions?
System details:
- Windows 10
- Visual Studio Community 2017 v.15.2 (26430.6) -- Installed Desktop Development with C++ (Screenshot: Installation list)
Step 1: I wrote the famous Hello, World! program in C++.
Step 2: I clicked on Build → Build Solution.
Problem: 'stdio.h': No such file or directory. Full Error:
Troubleshooting details and things I've tried:
Configuration Properties* → VC++ Directories Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
Code in stdafx.cpp file:
Code in stdafx.h file:
Tried: I tried removing the last two lines, but then I got more errors.
Well, start by removing the stdafx.h include since it is non-standard and complete unnecessary in VS2017.
Either way this is actually a bit weird, as
@PaulStelian if that's the case, perhaps my error was mostly caused by my Windows SDK install not working well with my Visual Studio install. See answer below.
14 Answers 14
I got same problem with a project porting from Visual Studio 2013 to Visual Studio 2017.
Fix: change Properties → General → Windows SDK Version to 10
That worked fo me. Thanks! I would also add that these properties can be reached by right clicking on the project in the solution explorer.
I had the same problem after changing nothing at all in the project. I would assume maybe something to do with windows updates? The version that was selected was 10.something but there was a never one available and that one worked. I assume that this new one used to not be there back when it worked.
On Microsoft Visual Studio Community 2017 15.7.1 I don't have "Windows SDK Version". However, right-clicking on solution and doing "Retarget solution" worked.
Faced the problem of missing stdlib.h and stdio.h (and maybe more) after installing VS2017 Community on a new computer and migrating a solution from VS2013 to VS2017.
Used @Maxim Akristiniy's proposal, but still got error message regarding toolset compatibility. However VS itself suggested to do solution retarget by right-clicking on the solution in Solution Explorer, then selecting Retarget solution from the menu and the updated Windows SDK Version from the drop-down list.
Now my projects build w/o a problem.
Note that you may need to make the project your startup project for the retargeting to catch.
I've noticed (depressingly) that sometimes one has to exit Visual Studio and restart it after any of this fiddling.
On Microsoft Visual Studio Community 2017 15.7.1 I don't have "Windows SDK Version" as mentioned in the top-vote-getting answer. However, your answer worked fine and I didn't have to restart anything.
There are three ways to solve this issue.
Reinstall Visual Studio
This also worked for me, because I realized that maybe there was something wrong with my Windows SDK. I was using Windows 10, but with Windows SDK 8.1. You may have this problem as well.
Steps: Open Visual Studio Installer > Click on the three-lined Menu Bar > Uninstall > Restart your computer > Open Visual Studio Installer > Install what you want, but make sure you install only the latest Windows SDK 10, not multiple ones nor the 8.1.
The first time I installed Visual Studio, I would get an error stating that I needed to install Windows SDK 8.1. So I did, through Visual Studio Installer's Modify option. Perhaps this was a problem because I was installed it after Visual Studio was already installed, or because I needed SDK 10 instead. Just to be safe I did a complete reinstall.
Это файл c_cpp_properties.json
Ошибка: Unable to invoke Code Completion due to errors in source code
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics.
INCLUDEPATH += .
Здравствуйте, В .pro файл я положил место, где есть многие заголовочные файлы INCLUDEPATH.
INCLUDEPATH
Всем привет! Такой вопрос INCLUDEPATH в Qt - это аналог для указания HEADERS += и SOURCES.
Ставишь точку останова на ретурн и ищешь окно, куда вывдит строку. Туда же, скорее всего, и надо вводить переменные.
Ставишь точку останова на ретурн и ищешь окно, куда вывдит строку. Туда же, скорее всего, и надо вводить переменные.
Попробовал ваш код, строка выводилась в консоль отладки, если туда что-либо ввести выходила ошибка. Вопрос решился тем, что в файле launch.json у значения "externalConsole" я поменял false на true и теперь у меня выходит окно консоли!
Большое спасибо вам ребята за помощь и терпение)
P1XELCORE, вот я сейчас как раз пытался найти, где это в настройках выставляется ))
Вообще, при создании проекта нужно выбрать шаблон "Консольное приложение" и эта настройка там будет сразу.
Вы всегда можете вызвать AllocConsole в коде, чтобы создать консоль для вашего приложения и присоединить ее к процессу. FreeConsole удалит консоль, а также отсоединит процесс от нее.
это к вопросу, почему не работало ShowWindow (GetConsoleWindow(), SW_SHOW);
Попробуй, получится ли создать/удалить консоль так
Добавлено через 1 минуту
P.S. сам с консолью ни в жисть не создавал приложения, у меня всё GUIшное обычно. Хоть теперь буду знать, если что )
странно, не получается) но при написании AllocConsole выходит ошибка и ссылается на библиотеку
а по поводу шаблона "консольное приложение", я читал как создавать проект в visual studio и там как раз об этом писалось, а я пишу в visual studio code и тут такого не нашёл, может быть в этом нюанс? ведь первое - целое ide, а второе служит как редактор для кода и менее емкий (если не ошибаюсь)
хотя код можно писать хоть в блокноте)
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.
Лучший отвечающий
Вопрос
Ответы
Единственная возможноя причина, это то что берутся заголовочные файлы из одной версии SDK, а тулсет из другой. Если есть старые ненужные версии студии, снесите их, и переустановите SDK нужной версии студии.
- Предложено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 6 марта 2018 г. 7:51
- Помечено в качестве ответа Maksim Marinov Microsoft contingent staff, Moderator 29 марта 2018 г. 9:57
Все ответы
"все необходимые файлы в папку debug перенесены" - В смысле? Ошибка говорит довольно четко, что exe-файла нет. Программа компилируется или нет?
Покажите весь вывод компилятора.
Что значит "очистка решения"? Если это подразумевает удаление файла stdafx.h без выключения предкомпилированных заголовков в свойствах проекта, результат вполне предсказуем.
Программа не компилируется, перенесены файлы для sfml. Очистка решения : сборка - очистить решение. Вывод компилятора:
1>------ Сборка начата: проект: Triple_redone, Конфигурация: Debug Win32 ------
1>Source.cpp
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.11.25503\include\crtdefs.h(10): fatal error C1083: Не удается открыть файл включение: corecrt.h: No such file or directory
1>Сборка проекта "Triple_redone.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Файл corecrt.h присутствует в стандартном каталоге (C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\SDK\include\ucrt)
Я использую код Visual Studio в моем проекте C ++. Я установил расширение Microsoft C / C ++ для кода VS . Я получил следующую ошибку:
Нажмите на лампочку и отредактируйте открываемый файл JSON. Выберите правильный блок, соответствующий вашей платформе (есть Mac , Linux , Win32 - версия ms-vscode.cpptools: 3). Обновите пути в includePath (имеет значение, если вы компилируете с VS Code) или browse.paths (имеет значение, если вы перемещаетесь с VS Code) или в обоих.
Благодаря @Francesco Borzì я добавлю его ответ здесь:
Вы также можете нажать кнопку мыши Right 🖰 на подчеркнутом коде.
Я пробовал программу "Здравствуй, мир", и эта строка:
Было подчеркнуто зеленым. Я старался:
- Удаление строки
- Переписать строку
- Нажав на желтую лампочку и выбрав обновить
Исправлено предупреждение об ошибке. я не знаю, если это решило актуальную проблему. Но потом я собираю через Linux Linux на Windows 10
Я попал сюда после некоторой борьбы, но на самом деле мне не хватало только:
- Кликните левой кнопкой мыши по лампочке линии ошибки
- Нажмите Edit Include path
- Тогда это окно всплывающее
- Пожалуйста, добавьте этот каталог в вашу переменную среды (путь):
C : \ MinGW - w64 \ x86_64-8.1.0 - win32 - SEH - rt_v6 - rev0 \ mingw64 \ Bin \
- В поле Включить обнаруженные ошибки укажите путь к вашей папке включения в
"includePath": ["C: /mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/include/"]
, поскольку это путь, откуда компилятор выбирает библиотеку для включения в вашу программу.
Если у кого-то есть такая проблема, возможно, вам просто нужно установить build-essential.
После закрытия и повторного открытия VS, это должно разрешиться.
Пробовал эти решения и многие другие за 1 час. Закончилось закрытием VS Code и открытием снова. Это просто
Читайте также: