61 votes

Impossible d'ouvrir le fichier d'inclusion : 'stdio.h' - Visual Studio Community 2017 - Erreur C++

J'essaie de construire une solution sur Visual Studio Community 2017, mais je continue à obtenir l'erreur " Impossible d'ouvrir le fichier include : 'stdio.h'. ". J'ai lu plusieurs questions similaires, mais je n'arrive toujours pas à résoudre ce problème. Il semble que le stdio.h est appelé dans le fichier stdafx.h fichier. Vous trouverez ci-dessous plus de détails. Avez-vous des suggestions ? (Je ne peux pas encore intégrer les images, alors veuillez cliquer sur les liens pour obtenir des 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 des installations )


É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 Build > Build Solution.

Problème : 'stdio.h' : No such file or directory . 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 du dépannage/choses que j'ai essayées :

  1. Propriétés de configuration > Répertoires VC++
    Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);

  2. Capture d'écran : Explorateur de solutions (fichiers dans le projet)

  3. Code en 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
  4. Code en 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 : le #include pour <stdio.h> et <tchar.h> Les deux ont la ligne rouge en dessous, et dit "cannot open source file".
    ESSAI : J'ai essayé de supprimer les deux dernières lignes, mais j'ai eu plus d'erreurs.

  5. ESSAI : Comme beaucoup ont suggéré que stdafx.h n'est pas nécessaire, j'ai essayé de supprimer juste la première ligne, #include "stdafx.h" . Mais pour que cela fonctionne, je devais faire un peu plus. VOIR LA RÉPONSE CI-DESSOUS.

2 votes

Commencez par supprimer l'inclusion de stdafx.h car elle n'est pas standard et complète. inutile dans VS2017.

1 votes

Désactiver l'en-tête précompilé et supprimer stdafx*.

0 votes

@DeiDei Oh, j'ai effectivement essayé cela. Je vais l'ajouter ci-dessus. D'une certaine manière, cela n'a pas fonctionné pour moi, car je n'ai supprimé que cette ligne, #include "stdafx.h" . J'ai dû faire un peu plus, ce qui est, je pense, ce que @manni66 suggérait. Tout d'abord, j'ai configuré mes options pour ignorer les en-têtes précompilés en suivant les instructions suivantes ici . Ensuite, j'ai supprimé cette ligne dans le code. Merci à tous pour leur contribution !

107voto

Maxim Akristiniy Points 1604

J'ai eu le même problème avec le portage du projet de VS2013 à VS2017,
Correction : changer "Propriétés->Général->Version du SDK Windows" en 10

9 votes

Ça a marché pour moi. Merci ! J'ajouterais également que ces propriétés peuvent être atteintes en faisant un clic droit sur le projet dans l'explorateur de solutions.

2 votes

J'ai également dû installer le composant Visual Studio "Windows Universal CRT SDK", comme décrit ici. stackoverflow.com/a/42778079/3893068

1 votes

J'ai eu le même problème après n'avoir rien changé du tout dans le projet. Je suppose que cela a peut-être quelque chose à voir avec les mises à jour de Windows ? La version sélectionnée était 10.something mais il y en avait une autre disponible et celle-là fonctionnait. Je suppose que cette nouvelle version n'était pas disponible à l'époque où elle fonctionnait.

20voto

ysap Points 2255

Confronté au problème de la disparition stdlib.h et stdio.h (et peut-être plus) après avoir installé VS2017 Community sur un nouvel ordinateur et avoir migré une solution de VS2013 à VS2017.

Utilisé @Maxim Akristiniy mais j'ai toujours un message d'erreur concernant la compatibilité des outils. Cependant, VS lui-même a suggéré de recibler la solution en faisant un clic droit sur la solution dans la fenêtre Explorateur de solutions puis en sélectionnant Retarget solution du menu et la mise à jour Windows SDK Version dans la liste déroulante.

Maintenant, mes projets se construisent sans problème.

Notez que vous devrez peut-être faire de ce projet votre projet de démarrage pour que le reciblage soit pris en compte.

1 votes

J'ai remarqué (de manière déprimante) qu'il faut parfois quitter Visual Studio et le redémarrer après toutes ces manipulations.

1 votes

Sur Microsoft Visual Studio Community 2017 15.7.1, je n'ai pas "Windows SDK Version" comme mentionné dans la réponse qui a obtenu le plus de votes. Cependant, votre réponse a bien fonctionné et je n'ai pas eu à redémarrer quoi que ce soit.

12voto

dahiana Points 421

Il existe trois façons de résoudre ce problème.

  1. Ignorer les en-têtes précompilés #1
    Des pas : Projet > Propriétés > Propriétés de configuration > C/C++ > Ligne de commande > dans la case Options supplémentaires ajouter /Y-. ( Capture d'écran des pages de propriété ) > Ok > Supprimer #include "stdafx.h"
  2. Ignorer les en-têtes précompilés #2
    Des pas : Fichier > Nouveau > Projet > ... > Dans la fenêtre de l'assistant d'application, cliquez sur Next > Décochez la case Precompiled Header > Finish > Remove #include "stdafx.h"
  3. Réinstaller Visual Studio
    Cela a également fonctionné pour moi, car j'ai réalisé qu'il y avait peut-être un problème avec mon SDK Windows. J'utilisais Windows 10, mais avec Windows SDK 8.1. Vous avez peut-être aussi ce problème.
    Des pas : Ouvrez Visual Studio Installer > Cliquez sur la barre de menu à trois lignes > Désinstaller > Redémarrez votre ordinateur > Ouvrez Visual Studio Installer > Installez ce que vous voulez, mais assurez-vous d'installer uniquement le dernier SDK Windows 10, pas les multiples ni le 8.1.

    La première fois que j'ai installé Visual Studio, j'ai obtenu une erreur indiquant que je devais installer Windows SDK 8.1. C'est ce que j'ai fait, via l'option Modifier de Visual Studio Installer. Le problème venait peut-être du fait que je l'avais installé après que Visual Studio était déjà installé, ou parce que j'avais besoin du SDK 10 à la place. Juste pour être sûr, j'ai fait une réinstallation complète.

0 votes

Le problème avec l'option 1 est que vous devez le faire pour chaque projet. Si je trouve une meilleure solution, je la posterai ici.

8voto

Sapnesh Naik Points 4878

Pour CUDA :

Cliquez avec le bouton droit de la souris sur votre projet.

Aller à Propriétés->CUDA et mettre " CUDA Toolkit Custom Dir "dans le répertoire de votre boîte à outils CUDA.

Le mien l'était : C:\\Program Fichiers \NVIDIA Boîte à outils pour le calcul par le GPU \CUDA\v10.0

enter image description here

6voto

Hemaolle Points 512

Au cas où vous ne souhaiteriez pas faire évoluer Windows SDK vers 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 navigant sur Tools -> Get Tools and Features... -> Individual Compontents tab et l'installation des composants individuels "Windows 8.1 SDK" (sous SDKs, libraries and frameworks) et "Windows Universal CRT SDK" (sous Compilateurs, build tools and runtimes) :

3 votes

J'ai dû installer le composant Visual Studio "Windows Universal CRT SDK" en plus de changer la version du SDK Windows à 10.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X