无法打开包含文件:' stdio.h' - Visual Studio社区2017 - C ++错误

时间:2017-05-27 17:41:03

标签: c++ visual-studio visual-studio-2017 stdio

我正在尝试在Visual Studio社区2017上构建解决方案,但我一直收到错误" 无法打开包含文件:' stdio.h' &# 34 ;.我已经阅读了几个类似的问题,但仍然无法解决这个问题。看起来在 stdafx.h 文件中调用 stdio.h 文件。以下是更多细节。有什么建议? (我无法嵌入图片,因此请点击屏幕截图链接。)

系统详情: Windows 10
Visual Studio Community 2017 v.15.2(26430.6)
- 使用C ++安装的桌面开发(Screenshot: Installation list

第1步:我用C ++编写了着名的Hello World程序。

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

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

第2步:我点击了Build&gt;构建解决方案。

问题: &#39; stdio.h&#39; :没有此类文件或目录。完全错误:

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. 配置属性&gt; VC ++目录
    Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
  2. Screenshot: Solution Explorer (files in the project)
  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>的{​​{1}}下面都有红色的波浪线,并且表示&#34;无法打开源文件&#34;。
    TRIED:我尝试删除最后两行,但后来我遇到了更多错误。

  5. TRIED:由于许多人认为不需要stdafx.h,我尝试仅删除第一行<tchar.h>。但为了实现这一点,我必须多做一点。 见下面的答案。

13 个答案:

答案 0 :(得分:75)

项目从VS2013移植到VS2017时遇到同样的问题,
修复:将“属性 - >常规 - > Windows SDK版本”更改为10

答案 1 :(得分:12)

在新计算机上安装VS2017社区并将解决方案从VS2013迁移到VS2017后,面临丢失stdlib.hstdio.h(以及更多)的问题。

已使用@Maxim Akristiniy的提案,但仍然收到有关工具集兼容性的错误消息。但是,VS本身建议通过右键单击解决方案资源管理器中的解决方案来进行解决方案重新定位,然后从菜单中选择Retarget solution并从下拉列表中选择更新的Windows SDK Version

现在我的项目没有问题。

请注意,您可能需要将项目作为重新定位的启动项目才能捕获。

答案 2 :(得分:8)

有三种方法可以解决这个问题。

  1. 忽略预编译标题#1
    步骤:项目&gt;属性&gt;配置属性&gt; C / C ++&gt;命令行&gt;在附加选项框中添加/ Y-。 (Screenshot of Property Pages)&gt;好的&gt;删除#include "stdafx.h"
  2. 忽略预编译标题#2
    步骤:文件&gt;新&gt;项目&gt; ...&gt;在“应用程序向导”窗口中单击“下一步”>取消选中预编译标题框&gt;完成&gt;删除#include "stdafx.h"
  3. 重新安装Visual Studio
    这也对我有用,因为我意识到我的Windows SDK可能有问题。我使用的是Windows 10,但使用的是Windows SDK 8.1。你也可能遇到这个问题 步骤:打开Visual Studio Installer&gt;点击三线菜单栏&gt;卸载&gt;重新启动计算机&gt;打开Visual Studio Installer&gt;安装您想要的,但请确保您只安装最新的Windows SDK 10,而不是多个,而不是8.1。

    我第一次安装Visual Studio时,会收到一条错误消息,指出我需要安装Windows SDK 8.1。所以我通过Visual Studio Installer的修改选项做了。也许这是一个问题,因为我在安装Visual Studio之后安装了它,或者因为我需要SDK 10。为了安全起见,我做了一个完整的重新安装。

答案 3 :(得分:4)

对于CUDA:

右键单击您的项目。

转到属性-> CUDA ,并将“ CUDA Toolkit自定义目录”设置为CUDA工具包目录。

我的位置是: C:\\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0

enter image description here

答案 4 :(得分:3)

仅在您不想将Windows SDK推向Windows 10的情况下(例如,您可能正在做一个不由您决定的开源项目),您可以在Windows SDK中解决此问题导航Tools -> Get Tools and Features... -> Individual Compontents tab并安装单个组件“ Windows 8.1 SDK”(在SDK,库和框架下)和“ Windows Universal CRT SDK”(在编译器,构建工具和运行时下):

答案 5 :(得分:2)

如果您遇到 Visual Studio 2019(VS2019)的问题,则可以从https://visualstudio.microsoft.com/downloads/下载构建工具。并且,在“ Visual Studio 2019工具”下,下载为Visual Studio 2019构建工具

答案 6 :(得分:1)

更新我的VS2017后,我遇到了类似的问题。项目建设很好;但是在编辑器中提出代码时会出现很多“错误”。甚至尝试重新安装VS.我能够通过将“Ignore Standard Include Paths”选项设置为Yes来解决它。尝试构建具有大量错误的解决方案。退回并将选项设置为否。重建后,我的问题就消失了。

答案 7 :(得分:1)

面临着同样的问题,另一种解决方案是添加默认包括,这个固定的问题对我来说:

$(IncludePath);

答案 8 :(得分:1)

场景:

  1. Windows 10 Visual Studio 2017 (FRESH安装)。

  2. 'C'项目 错误,例如-> 无法打开源文件:'stdio .h','windows.h'等)。

解决:

  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 :(得分:0)

一个肮脏的修补程序:添加$(VC_IncludePath); $(WindowsSDK_IncludePath);进入项目属性/ C / C ++ /常规/其他包含目录

答案 10 :(得分:0)

对我来说类似的问题,但有些不同。我可以毫无问题地编译并运行默认的CUDA 10代码,但是在编辑窗口中显示的stdio.h文件有很多错误。真烦人。 我将代码文件名从“ kernel.cu”更改为“ kernel.cpp”来解决。那是有线的,但是对我有用。到目前为止,它运行良好。

答案 11 :(得分:0)

我遇到了同样的问题。 运行“Visual Studio 安装程序”->修改->Windows 10 SDK(10.0.17134.0)。 等待更新完成。 重新启动计算机。

打开 VS-2017 并打开您的项目。

右键单击项目解决方案资源管理器。 选择“重定向解决方案”,然后选择“Windows 10 SDK(10.0.17134.0)”。 它对我有用。

答案 12 :(得分:-1)

我在使用Visual Studio 2017 IDE构建VS 2013项目时遇到了同样的问题。 解决方案是设置正确的“ Platformtoolset v120(Visual Studio 2013)。因此必须安装Windows SDK 8.1。 如果要使用Platformtoolset v141(Visual Studio 2017),则必须有Windows SDK 10。 可以在项目的属性对话框中选择Platformtoolset:常规-> Platformtoolset