Невозможно открыть файл include: 'stdio.h' - Сообщество Visual Studio 2017 - C++ Ошибка

Я пытаюсь создать решение для 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++.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

Шаг 2: Я нажал на Build> Build Solution.

Проблема: "stdio.h": нет такого файла или каталога. Полная ошибка:

1>------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
1>stdafx.cpp
1>c:\users\dahiana mini\desktop\learncpp\helloworld\helloworld\stdafx.h(10): 
    fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
1>Done building project "HelloWorld.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Устранение неисправностей/Вещи, которые я пробовал:

  1. Свойства конфигурации> V C++ Каталоги
    Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
  2. Скриншот: Solution Explorer (файлы в проекте)
  3. Код в файле stdafx.cpp:

    // stdafx.cpp : source file that includes just the standard includes  
    // HelloWorld.pch will be the pre-compiled header
    // stdafx.obj will contain the pre-compiled type information
    
    #include "stdafx.h"
    
    // TODO: reference any additional headers you need in STDAFX.H
    // and not in this file
    
  4. Код в файле stdafx.h:

    // stdafx.h : include file for standard system include files,
    // or project specific include files that are used frequently, but
    // are changed infrequently
    
    #pragma once
    
    #include "targetver.h"
    #include <stdio.h>
    #include <tchar.h>
    

    ПРИМЕЧАНИЕ. #include для <stdio.h> и <tchar.h> обе имеют красную линию <tchar.h> внизу и говорят, что "невозможно открыть исходный файл".
    TRIED: Я попытался удалить последние две строки, но потом у меня появилось больше ошибок.

  5. TRIED: Поскольку многие предположили, что stdafx.h не требуется, я попытался удалить только первую строку, #include "stdafx.h". Но для этого я должен был сделать немного больше. ПОСМОТРЕТЬ ОТВЕТ.

Ответ 1

Существует три способа решить эту проблему.

  1. Игнорировать предварительно скомпилированные заголовки # 1
    Шаги: Проект> Свойства> Свойства конфигурации> C/C++> Командная строка> в поле Дополнительные параметры добавить /Y-. (Снимок экрана с Страницы свойств)> Ок> Удалить #include "stdafx.h"
  2. Игнорировать предварительно скомпилированные заголовки # 2
    Шаги: Файл> Создать> Проект>...> В окне мастера приложений нажмите "Далее"> "Снимите флажок" Предварительно скомпилированный заголовок ">" Готово ">" Удалить " #include "stdafx.h"
  3. Переустановите Visual Studio
    Это также сработало для меня, потому что я понял, что, возможно, что-то не так с моим Windows SDK. Я использовал Windows 10, но с Windows SDK 8.1. У вас может быть и эта проблема.
    Шаги: Открыть установщик Visual Studio> Нажмите на трехстрочную панель меню> Удалить> Перезагрузите компьютер> Откройте программу установки Visual Studio> Установите то, что вы хотите, но убедитесь, что вы устанавливаете только последние версии Windows SDK 10, а не несколько, а также 8.1,

    В первый раз, когда я установил Visual Studio, я получил бы сообщение о том, что мне нужно установить Windows SDK 8.1. Таким образом, я сделал это с помощью опции Visual Studio Installer Modify. Возможно, это была проблема, потому что я был установлен после установки Visual Studio или потому, что мне нужен SDK 10. Чтобы быть в безопасности, я полностью переустановил.

Ответ 2

Похожая проблема с переносом проекта из VS2013 в VS2017,
Исправить: изменить "Properties-> Общий-> Версия SDK Windows" на 10

Ответ 3

Столкнулась с проблемой отсутствия stdlib.h и stdio.h (и, возможно, больше) после установки сообщества VS2017 на новом компьютере и переноса решения из VS2013 на VS2017.

Используется предложение @Maxim Akristiniy, но по-прежнему появляется сообщение об ошибке совместимости с набором инструментов. Однако сам VS предложил выполнить перенастройку решения, щелкнув правой кнопкой мыши на решении в обозревателе решений, затем выбрав из списка пункт Retarget solution и обновленную Windows SDK Version из раскрывающегося списка.

Теперь мои проекты связаны с проблемой.

Обратите внимание, что вам может потребоваться сделать проект для вашего проекта запуска для перехвата.

Ответ 4

Если вы не хотите использовать Windows SDK для Windows 10 (например, вы можете работать над проектом с открытым исходным кодом, решение которого не принимается вами), вы можете решить эту проблему в проекте Windows SDK 8.1 с помощью Tools → Get Tools and Features... → Individual Compontents tab навигации Tools → Get Tools and Features... → Individual Compontents tab "Отдельные компоненты" и установка отдельных компонентов "Windows 8.1 SDK" (в составе SDK, библиотек и сред) и "Windows Universal CRT SDK" (в разделе "Компиляторы, инструменты сборки и среды выполнения"):

Ответ 5

Для CUDA:

Щелкните правой кнопкой мыши по вашему проекту.

Перейдите в Properties-> CUDA и установите "Пользовательский каталог набора инструментов CUDA" в свой каталог набора инструментов CUDA.

Мой был: C:\\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0

enter image description here

Ответ 6

Столкнулся с той же проблемой, другое решение заключается в добавлении включенных по умолчанию, это исправило проблему для меня:

$(IncludePath);

Ответ 7

У меня была аналогичная проблема после обновления моего VS2017. Проект построен отлично; но много "ошибок", когда код был поднят в редакторе. Даже попытался переустановить VS. Я смог решить эту проблему, установив опцию "Игнорировать стандартные включенные пути" в "Да". Попытка построить решение с большим количеством ошибок. Вернулся и установил вариант №. После перестройки моя проблема исчезла.

Ответ 8

Сценарий:

  1. Windows 10 с Visual Studio 2017 (установка FRESH).

  2. Проект 'C' (ОШИБКА как → не может открыть исходный файл: "stdio.h", "windows.h" и т.д.).

Resolve:

  1. Запустите установщик Visual Studio.

  2. Нажмите кнопку "Изменить".

  3. Выберите "Разработка рабочего стола с помощью C++".

  4. В разделе "Сведения об установке" (обычно на правой боковой панели) выберите:

    4.1. Windows 10 SDK (10.0.17134.0).

    • Версия SDK в 4.1. это только для примера.
  5. Нажмите кнопку "Изменить", чтобы применить изменения.

  6. Щелкните правой кнопкой мыши "SomeProject" → "Свойства".
  7. "Конфигурация:" → "Все конфигурации" и "Платформа:" → "Все платформы".
  8. "Свойства конфигурации" → "Общие" → "Версия Windows SDK":
    • изменить (выбрать из выпадающего списка) версию SDK на установленную в настоящее время;
  9. Нажмите кнопку "Применить", чтобы применить изменения.

Ответ 9

Грязное исправление: Добавить $ (VC_IncludePath); $ (WindowsSDK_IncludePath); в свойствах проекта /C/C++/Общие/Дополнительные каталоги включения

Ответ 10

Подобная проблема для меня, но немного другая. Я могу без проблем скомпилировать и запустить код CUDA 10 по умолчанию, но есть много ошибок, связанных с отображением файла stdio.h в окне редактирования. Что раздражает. Я решаю это путем изменения имени файла кода с "kernel.cu" на "kernel.cpp". Это связано, но работает для меня. И пока все идет хорошо.

Ответ 11

У меня была такая же проблема с проектом 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