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

Cannot open include file: 'stdio.h' - Visual Studio Community 2017 - C++ Error

我正在尝试在 Visual Studio Community 2017 上构建解决方案,但我不断收到错误消息“无法打开包含文件:'stdio.h'”。

我看了好几个类似的问题,还是解决不了这个问题。好像是在stdafx.h文件中调用了stdio.h文件。以下是更多详细信息。有什么建议吗?

系统详情:


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

#include "stdafx.h"
#include <iostream>

using namespace std;

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

第 2 步: 我点击了 BuildBuild 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. 配置属性* → 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>
    

    注意:<stdio.h><tchar.h>#include 下方都有红色波浪线,表示“无法打开源文件”。

    尝试过:我尝试删除最后两行,但后来出现更多错误。

  5. 试过:由于许多人建议 stdafx.h 不是必需的,我尝试只删除第一行 #include "stdafx.h"。但是为了让它起作用,我必须做更多的事情。 请参阅下面的答案。

可以通过三种方式解决这个问题。

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

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

我在将项目从 Visual Studio 2013 移植到 Visual Studio 2017 时遇到了同样的问题。

修复:将属性常规Windows SDK 版本 更改为10

在新计算机上安装 VS2017 Community 并将解决方案从 VS2013 迁移到 VS2017 后,遇到缺少 stdlib.hstdio.h(可能更多)的问题。

使用了的建议,但仍然收到有关工具集兼容性的错误消息。然而,VS 本身建议通过右键单击 Solution Explorer 中的解决方案来进行解决方案重定向,然后从菜单中选择 Retarget solution 并从下拉列表中选择更新的 Windows SDK Version -下列表。

现在我的项目构建 w/o 一个问题。

请注意,您可能需要将该项目设为您的启动项目,以便重新定位。

更新我的 VS2017 后我遇到了类似的问题。工程建设良好;但是很多 'errors' 当代码在编辑器中出现时。甚至尝试重新安装 VS。我能够通过将选项“忽略标准包含路径”设置为是来解决它。尝试构建包含大量错误的解决方案。返回并将选项设置为否。重建后,我的问题消失了。

我在使用 Visual Studio 2017 IDE 构建 Visual Studio 2013 项目时遇到了同样的问题。

解决方案是设置正确的“Platformtoolset v120 (Visual Studio 2013)。因此必须安装 Windows SDK 8.1。 如果你想使用 Platformtoolset v141 (Visual Studio 2017) 必须有 Windows SDK 10.

Platformtoolset 可以在项目的属性对话框中选择:General * → Platformtoolset

以防万一您不想将 Windows SDK 提高到 Windows 10(例如,您可能正在从事一个开源项目,而您无法做出决定) ,您可以通过导航 Tools -> Get Tools and Features... -> Individual Compontents tab 并安装各个组件 "Windows 8.1 SDK"(在 SDK、库和框架下)和 "Windows Universal CRT SDK"(在编译器下)来解决 Windows SDK 8.1 项目中的这个问题,构建工具和运行时):

我遇到了同样的问题。另一种解决方案是添加默认包含。

这解决了我的问题:

$(IncludePath);

场景:

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

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

解析:

  1. 运行 'Visual Studio 安装程序'.

  2. 点击按钮'Modify'.

  3. Select '使用 C++ 进行桌面开发'.

  4. 来自"Installation details"(通常在右侧边栏)select:

    4.1。 Windows 10 SDK(10.0.17134.0).

    • SDK 版本为 4.1。只是举例。
  5. 单击按钮 'Modify' 以应用更改。

  6. 右键单击 'SomeProject' -> 'Properties'。
  7. 'Configuration:' -> 'All Configurations' 和 'Platform:' -> 'All Platforms'.
  8. 'Configuration Properties' -> 'General' -> 'Windows SDK 版本':
    • 将(select from combobox)SDK 版本更改为当前安装的
  9. 单击按钮 'Apply',以应用更改。

一个肮脏的修复:添加 $(VC_IncludePath);$(WindowsSDK_IncludePath);进入项目 Properties / C/C++ / General / Additional include directories

对于 CUDA:

右键单击您的项目。

转到 Properties->CUDA 并将“CUDA Toolkit Custom Dir”设置为您的 CUDA 工具包目录。

对我来说是:C:\\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0

对我来说是类似的问题,但有点不同。我可以毫无问题地编译和 运行 默认的 CUDA 10 代码,但是编辑 window 中显示的 stdio.h 文件有很多错误。这很烦人。 我通过将代码文件名从 "kernel.cu" 更改为 "kernel.cpp" 来解决它。那是有线的,但对我有用。到目前为止 运行 一切顺利。

如果您 运行 使用 Visual Studio 2019 (VS2019) 遇到这个问题,您可以从 https://visualstudio.microsoft.com/downloads/ 下载构建工具。并且,在 Tools for Visual Studio 2019 下下载 Build Tools for Visual Studios 2019.

我遇到了同样的问题。

  • 运行 'Visual Studio Installer' → 修改Windows 10 SDK (10.0.17134.0) .

  • 等待更新完成。

  • 重新启动计算机。

  • 打开 Visual Studio 2017 并打开您的项目。

  • 右键单击项目的解决方案资源管理器。

  • Select“重定向解决方案”,然后 select“Windows 10 SDK(10.0.17134.0)”。

对我有用。

对我来说,问题是我的 Windows 帐户没有权限。以下 url 帮助我确定了问题:

stdio.h in Visual Studio

https://social.msdn.microsoft.com/Forums/vstudio/en-US/5402a5ae-82e5-4370-9297-5be12152ce5e/standard-users-cannot-open-windowsh-using-x64-native-tools

最值得注意的是文本“如果您的标准用户想要使用本机工具编译 win32 项目,他们必须有权访问注册表编辑工具”。我在 Windows 中切换了用户并使用管理员帐户登录,问题消失了。