J'essaie de générer une solution sur Visual Studio Community 2017, mais le message d'erreur " Impossible d'ouvrir le fichier d'inclusion suivant: 'stdio.h' ". J'ai lu plusieurs questions similaires, mais je ne parviens toujours pas à résoudre ce problème. On dirait que le fichier stdio.h est appelé dans le fichier stdafx.h . Ci-dessous sont plus de détails. Aucune suggestion? (Je ne peux pas encore incorporer d'images, alors veuillez cliquer sur les liens pour voir les captures d'écran.)
Détails du système: Windows 10
Visual Studio Community 2017 v.15.2 (26430.6)
- Développement de bureau installé avec C++ ( Capture d'écran: Liste d'installation )
Étape 1: J'ai écrit le célèbre programme Hello World en C++.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
Étape 2: J'ai cliqué sur Construire> Construire la solution.
Problème: 'stdio.h': Aucun fichier ou répertoire de ce type. Erreur complète:
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 ==========
Détails de dépannage/Ce que j'ai essayé:
Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
Code dans stdafx.cpp fichier:
// 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
Code dans stdafx.h fichier:
// 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>
REMARQUE: les #include
pour <stdio.h>
et <tchar.h>
ont tous les deux la ligne de gribouillis rouge en dessous et indiquent "impossible d'ouvrir le fichier source".
TRIED: J'ai essayé de supprimer les deux dernières lignes, mais j'ai eu plus d'erreurs.
TRIED: Comme beaucoup de gens ont suggéré que stdafx.h n’était pas obligatoire, j’ai essayé de ne supprimer que la première ligne, #include "stdafx.h"
. Mais pour que cela fonctionne, je devais faire un peu plus. VOIR LA RÉPONSE CI-DESSOUS.
Il y a trois façons de résoudre ce problème.
#include "stdafx.h"
#include "stdafx.h"
.Réinstaller Visual Studio
Cela a également fonctionné pour moi, car je me suis rendu compte que quelque chose n'allait pas avec mon SDK Windows. J'utilisais Windows 10, mais avec Windows SDK 8.1. Vous pouvez aussi avoir ce problème.
Étapes: Ouvrez Visual Studio Installer> Cliquez sur la barre de menus à trois lignes> Désinstaller> Redémarrez votre ordinateur> Ouvrez Visual Studio Installer> Installez ce que vous voulez, mais assurez-vous d’installer seulement le dernier SDK Windows 10. , pas de multiples ni le 8.1.
La première fois que j'ai installé Visual Studio, un message d'erreur indiquant que je devais installer Windows SDK 8.1 devait s'afficher. C'est ce que j'ai fait, via l'option Modify de Visual Studio Installer. C’est peut-être un problème parce que j’ai été installé après l’installation de Visual Studio ou parce que j’avais besoin du SDK 10 à la place. Juste pour être sûr, j'ai fait une réinstallation complète.
J'ai eu le même problème avec le portage du projet de VS2013 à VS2017,
Correctif: remplacez "Propriétés-> Général-> Version du SDK Windows" par 10
A fait face au problème de stdlib.h
et stdio.h
(et peut-être davantage) manquant après l'installation de VS2017 Community sur un nouvel ordinateur et la migration d'une solution de VS2013 à VS2017.
Utilisation de la proposition de -Maxim Akristiniy , mais message d'erreur relatif à la compatibilité des outils. Cependant, VS a lui-même suggéré de recibler la solution en cliquant avec le bouton droit de la souris dans Explorateur de solutions, puis en sélectionnant Retarget solution
dans le menu et le Windows SDK Version
mis à jour dans la liste déroulante.
Maintenant, mes projets ne posent aucun problème.
Notez que vous devrez peut-être faire du projet votre projet de démarrage pour pouvoir être reciblé.
Juste au cas où vous ne voudriez pas utiliser Windows SDK sous Windows 10 (vous pourriez par exemple travailler sur un projet open source où la décision ne vous appartient pas), vous pouvez résoudre ce problème dans un projet Windows SDK 8.1 en naviguez Tools -> Get Tools and Features... -> Individual Compontents tab
et installez les composants individuels "Windows 8.1 SDK" (sous SDK, bibliothèques et frameworks) et "Windows Universal CRT SDK" (sous Compilateurs, outils de compilation et environnements d'exécution):
J'ai eu un problème similaire après la mise à jour de mon VS2017. Projet bien construit; mais beaucoup d'erreurs lorsque le code a été introduit dans l'éditeur. Même essayé de réinstaller VS. J'ai pu résoudre le problème en réglant l'option «Ignorer les chemins d'inclusion standard» sur Oui. Tentative de construction de la solution avec beaucoup d'erreurs. Nous sommes revenus et avons mis l'option sur Non. Après la reconstruction, mon problème a disparu.
Un correctif sale: Ajouter $ (VC_IncludePath); $ (WindowsSDK_IncludePath); dans le projet Propriétés/C/C++/Général/Répertoires d'inclusion supplémentaires
Scénario:
Windows 10 avecVisual Studio 2017(installation FRESH).
Projet 'C'(ERREURlike -> ne peut pas ouvrir le fichier source : 'stdio.h', 'windows.h', etc.).
Résoudre:
Exécutez ' Visual Studio Installer '.
Cliquez sur le bouton 'Modifier'.
Sélectionnez ' Développement du bureau avec C++ '.
Dans "Détails de l'installation" (généralement dans la barre latérale droite), sélectionnez:
4.1. Windows 10 SDK (10.0.17134.0) .
Cliquez sur le bouton 'Modifier' pour appliquer les modifications.
Face au même problème, une autre solution consiste à ajouter des inclusions par défaut, cela a résolu le problème pour moi:
$(IncludePath);