stdafx - No se puede abrir el archivo de inclusión: ''stdio.h''-Visual Studio Community 2017-Error de C++
stdafx.h dev c++ (6)
Estoy intentando construir una solución en Visual Studio Community 2017, pero sigo recibiendo el error " No se puede abrir el archivo de inclusión: ''stdio.h'' ". He leído varias preguntas similares, pero aún no puedo solucionar este problema. Parece que el archivo stdio.h se llama en el archivo stdafx.h . A continuación se presentan más detalles. ¿Alguna sugerencia? (No puedo incrustar imágenes todavía, así que haga clic en los enlaces para obtener capturas de pantalla).
Detalles del sistema: Windows 10
Visual Studio Community 2017 v.15.2 (26430.6)
- Desarrollo de escritorio instalado con C ++ ( Captura de pantalla: Lista de instalación )
Paso 1: Escribí el famoso programa Hello World en C ++.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
Paso 2: Hice clic en Generar> Generar solución.
Problema: ''stdio.h'' : No existe tal archivo o directorio. Error completo:
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 ==========
Detalles de solución de problemas / cosas que he probado:
- Propiedades de configuración> Directorios de VC ++
Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
- Captura de pantalla: Explorador de soluciones (archivos en el proyecto)
Código en el archivo 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
Código en el archivo 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>
NOTA: el
#include
para<stdio.h>
y<tchar.h>
tienen la línea roja de garabatos debajo y dice "no se puede abrir el archivo de origen".
TRIED: Intenté eliminar las dos últimas líneas, pero luego tuve más errores.TRIED: Ya que muchos sugirieron que no se requiere stdafx.h, intenté eliminar solo la primera línea,
#include "stdafx.h"
. Pero para que esto funcionara tuve que hacer un poco más. VER RESPUESTA ABAJO.
En caso de que no quiera pasar el SDK de Windows a Windows 10 (por ejemplo, podría estar trabajando en un proyecto de código abierto en el que la decisión no es suya), puede resolver este problema en un proyecto de Windows SDK 8.1 de Navegar por Tools -> Get Tools and Features... -> Individual Compontents tab
e instalar los componentes individuales "Windows 8.1 SDK" (en SDK, bibliotecas y marcos) y "Windows Universal CRT SDK" (en Compiladores, herramientas de compilación y tiempos de ejecución) :
Enfrentó el problema de la falta de stdlib.h
y stdio.h
(y quizás más) después de instalar la Comunidad VS2017 en una computadora nueva y migrar una solución de VS2013 a VS2017.
Usé la propuesta de @Maxim Akristiniy , pero aún así recibí un mensaje de error sobre la compatibilidad del conjunto de herramientas. Sin embargo, la propia VS sugirió hacer un retarget de solución haciendo clic derecho en la solución en el Explorador de soluciones , luego seleccionando Retarget solution
en el menú y la Windows SDK Version
actualizada de Windows SDK Version
de la lista desplegable.
Ahora mis proyectos construyen w / oa problema.
Tenga en cuenta que es posible que necesite que el proyecto sea su proyecto de inicio para que la retargeting se capture.
Hay tres formas de resolver este problema.
- Ignorar encabezados precompilados # 1
Pasos: Proyecto> Propiedades> Propiedades de configuración> C / C ++> Línea de comando> en el cuadro Opciones adicionales agregue / Y-. ( Captura de pantalla de las páginas de propiedades )> Ok> Eliminar#include "stdafx.h"
- Ignorar encabezados precompilados # 2
Pasos: Archivo> Nuevo> Proyecto> ...> En la ventana del Asistente de aplicaciones, haga clic en Siguiente> Desmarque la casilla Encabezado precompilado> Finalizar> Eliminar#include "stdafx.h"
Reinstalar Visual Studio
Esto también funcionó para mí, porque me di cuenta de que tal vez había algún problema con mi SDK de Windows. Estaba usando Windows 10, pero con Windows SDK 8.1. Usted puede tener este problema también.
Pasos: Abra el instalador de Visual Studio> Haga clic en la barra de menú de tres líneas> Desinstalar> Reinicie su computadora> Abra el instalador de Visual Studio> Instale lo que desea, pero asegúrese de instalar solo el último SDK de Windows 10, no los múltiples ni el 8.1 .La primera vez que instalé Visual Studio, obtendría un error que indicaba que necesitaba instalar Windows SDK 8.1. Así lo hice, a través de la opción Modificar del instalador de Visual Studio. Quizás esto fue un problema porque lo instalé después de que Visual Studio ya estaba instalado, o porque necesitaba el SDK 10 en su lugar. Solo para estar seguro hice una reinstalación completa.
Tiene el mismo problema con la transferencia de proyectos de VS2013 a VS2017,
Corrección: cambie "Propiedades-> General-> Versión de Windows SDK" a 10
Tuve el mismo problema al crear el Proyecto VS 2013 con Visual Studio 2017 IDE. La solución fue configurar el derecho "Platformtoolset v120 (Visual Studio 2013). Por lo tanto, debe tener instalado Windows SDK 8.1. Si desea usar Platformtoolset v141 (Visual Studio 2017), debe haber Windows SDK 10. Se puede elegir Platformtoolset Dentro del diálogo de propiedades del proyecto: General -> Platformtoolset
Tuve un problema similar después de actualizar mi VS2017. Proyecto construido bien; pero muchos ''errores'' cuando el código fue presentado en el editor. Incluso intenté reinstalar VS. Pude resolverlo configurando la opción "Ignorar las rutas de inclusión estándar" en Sí. Intenté construir la solución con muchos errores. Regresé y configuré la opción en No. Después de la reconstrucción, mi problema desapareció.