Не удается открыть включаемый файл: 'stdio.h' - Visual Studio Community 2017 - Ошибка C ++

27

Я пытаюсь создать решение для 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". Но для этого я должен был сделать немного больше. ПОСМОТРЕТЬ ОТВЕТ.

  • 2
    Ну что ж, начнем с удаления файла stdafx.h, поскольку он нестандартен и не нужен в VS2017.
  • 1
    Отключите предварительно скомпилированный заголовок и удалите stdafx *.
Показать ещё 4 комментария
Теги:
visual-studio
visual-studio-2017
stdio

7 ответов

8
Лучший ответ

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

  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. Чтобы быть в безопасности, я полностью переустановил.

  • 0
    Проблема с вариантом № 1 заключается в том, что вы должны делать это для каждого проекта. Если я найду лучшее решение, я опубликую его здесь.
65

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

  • 6
    Это сработало для меня. Спасибо! Я также хотел бы добавить, что эти свойства можно получить, щелкнув правой кнопкой мыши по проекту в обозревателе решений.
  • 1
    Мне также пришлось установить компонент Visual Studio CRT SDK для Windows, как описано здесь - stackoverflow.com/a/42778079/3893068
Показать ещё 3 комментария
9

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

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

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

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

  • 1
    Я заметил (удручающе), что иногда приходится выходить из Visual Studio и перезапускать его после любой из этих неприятностей.
  • 1
    В Microsoft Visual Studio Community 2017 15.7.1 У меня нет «Windows SDK Version», как упоминалось в ответе, получившем наибольшее количество голосов. Тем не менее, ваш ответ работал нормально, и мне не пришлось ничего перезагружать.
2

Если вы не хотите использовать 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" (в разделе "Компиляторы, инструменты сборки и среды выполнения"):

  • 2
    Мне пришлось установить компонент Visual Studio "Windows Universal CRT SDK" в дополнение к изменению версии Windows SDK на 10.
  • 0
    Отличное решение для сложной проблемы времени.
1

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

  • 2
    Где я могу найти этот вариант?
  • 1
    свойства проекта -> свойства конфигурации -> C / C ++ -> препроцессор -> игнорировать стандартные пути включения. Да, ты прав. Проклятье Microsoft б / с снова.
0

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

$(IncludePath);
-2

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню