无法在Microsoft Visual Studio中打开Windows.h

40

首先,我使用的是Microsoft Visual Studio 2012。

我是一名C#/Java开发人员,现在我正在尝试使用Microsoft SDK和C++编程Kinect。所以我从Color Basics示例开始,但我无法将其编译。 起初,所有类都无法找到Windows.h。 因此,我安装(或重新安装,我不确定)了Windows SDK,并将SDK的包含目录添加到项目的包含“路径”中。然后所有问题都已解决,除了一个:

Error   5   error RC1015: cannot open include file 'windows.h'. C:\temp\ColorBasics-D2D\ColorBasics.rc  17  1   ColorBasics-D2D

这就是错误所在,但没有说明原因。因为该元素被多个文件引用,系统可以找到它,只有这个文件无法使用它。作为参考,整个出问题的文件是ColorBasics.rc:

//------------------------------------------------------------------------------
// <copyright file="ColorBasics-D3D.rc" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_APP                 ICON                    "app.ico"

/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_APP DIALOGEX 0, 0, 512, 424
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_CONTROLPARENT | WS_EX_APPWINDOW
CAPTION "Color Basics"
CLASS "ColorBasicsAppDlgWndClass"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "Screenshot",IDC_BUTTON_SCREENSHOT,238,391,50,14
    CONTROL         "",IDC_VIDEOVIEW,"Static",SS_BLACKFRAME,0,0,512,384
    LTEXT           "Press 'Screenshot' to save a screenshot to your 'My Pictures' directory.",IDC_STATUS,0,413,511,11,SS_SUNKEN,WS_EX_CLIENTEDGE
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
    IDD_APP, DIALOG
    BEGIN
    END
END
#endif    // APSTUDIO_INVOKED


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "#include ""windows.h""\r\n"
    "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED
9个回答

32
如果你还没有这样做过,请尝试把 "SDK 路径\Include" 添加到以下位置:
Project → Preferences → C/C++ → General → Additional Include Directories

并将"SDK Path\Lib"添加到:

Project → Preferences → Linker → General → Additional Library Directories

还有,请尝试更改 "Windows.h"<windows.h>

如果这不起作用,检查文件是否存在,它应该在Visual Studio安装目录下的"\VC\PlatformSDK\Include"文件夹中。


一些回答: 我正在使用 Visual Studio 的 Ultimate 版本,我尝试了您帖子中提到的所有方法(包括 include 和 lib),并将“Windows.h”更改为<Windows.h>。什么都不起作用。而且 PlatformSDK 文件夹不存在于-MVS2012-/VC/中,但在 WindowsSDK/Include 文件夹中存在。 - Cheiron
为了清晰起见:在2014年11月12日的编辑后,添加了正确的步骤,因此这是正确的答案。 - Cheiron
1
@Choufler,我已经将Include和Lib文件添加到项目中,但是"\VC\PlatformSDK\Include"文件夹中不存在windows.h。 - Naveen Verma
2
使用变量表示的路径对我也起到了作用 $(WindowsSdkDir)\include 和 $(WindowsSdkDir)\lib. - Pavel Rogovoy
@PavelRogovoy,您能详细说明如何在仅限命令行的构建机器上执行此操作吗?这是一个路径变量还是我必须在某个配置文件中设置它? - jaaq
在Visual Studio 2019中,项目>首选项不存在,因此此答案不再适用。 - Cuadue

14

如果你的目标是 Windows XP (v140_xp),请尝试安装 Windows XP 支持的 C++

从 Visual Studio 2012 开始,默认工具集 (v110) 不再支持 Windows XP。因此,如果您的项目使用默认的 C++ 软件包针对 Windows XP 进行定位,则可能会出现 Windows.h 错误。

检查您的项目的 平台工具集 中指定的 Windows SDK 版本 (项目 → 属性 → 配置属性 → 常规)。如果您的工具集结尾为 _xp,则需要安装 XP 支持。

Visual Studio: Project toolset

打开 Visual Studio 安装程序,并点击您版本的 Visual Studio 的 修改。打开 单个组件 选项卡,并向下滚动至 编译器、构建工具和运行时。在底部附近,勾选 Windows XP 支持的 C++,然后点击 修改 开始安装。

Visual Studio Installer: XP Support for C++

另请参阅:


13

打开Visual Studio。转到“工具”->“选项”,展开“项目和解决方案”。

从树中选择“VC++目录”,在右侧的组合框中选择“包含文件”。

您应该看到:

  

$(WindowsSdkDir)\include

如果缺少此内容,则表示存在问题。否则,请搜索一个文件,它应位于:

32位系统:

  

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include

64位系统:

  

C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Include

如果VS是以默认目录安装的。

来源:http://forums.codeguru.com/showthread.php?465935-quot-windows-h-no-such-file-or-directory-quot-in-Visual-Studio-2008!-Help&p=1786039#post1786039


9
在Windows 10操作系统中,Windows.h文件的路径为:C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\um\Windows.h。 - isgoed
1
在Windows 10上,它是C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include。 - KansaiRobot
1
对于 Visual Studio 2013,在 VC+++ 中,路径是用分号分隔的。因此,我必须添加一个分号,然后再加上路径:例如 $(IncludePath);$(VCInstallDir)atlmfc\include;C:\Program Files\Microsoft SDKs\Windows\v7.1\Include。 - Jeff Luyet
3
在VS17中,它显示已被弃用。因此我无法编辑它,但问题仍然存在。 - John Demetriou
在Visual Studio 2017中:“在工具>选项中编辑VC++目录已被弃用。 VC++目录现在作为用户属性表可用,该属性表默认添加到所有项目中。”单击“?”会导航至在线帮助页面:https://learn.microsoft.com/en-us/cpp/ide/vcpp-directories-property-page - Stevoisiak

7
对于我的情况,我需要右键单击解决方案并点击“重定向项目”。 在我的情况下,我将其重定向到Windows SDK版本10.0.1777.0和平台工具集v142。我还需要将"Windows.h"更改为<windows.h> 我正在运行Visual Studio 2019版本16.25,它在Windows 10机器上运行。

1

1) 进入 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A for VS2013

2) 复制文件夹 IncludeLib(你应该检查文件夹的位置,例如在 v7.1v8v6 等文件夹窗口中)

3) 将它们粘贴到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC

我解决了这些问题:

error lnk1104: 无法打开文件 'kernel32.lib'。
error c1083: 无法打开 Windows.h

谢谢。


0
需要选择正确的Windows SDK版本和平台工具集组合,当然这取决于您当前安装的工具集。

SDK Version and Platform Toolset


0
我开始了一份新工作(全新计算机),并安装了Visual Studio Community 2019(我们在等待VS 2022 Professional的更新)。我们使用C#和C++解决方案。使用VS Installer,我最初选择了“.Net桌面开发”、“使用C++进行桌面开发”和“数据存储和处理”。在“使用C++进行桌面开发”下需要勾选其他选项。我添加了“Windows 10 SDK(10.0.18362.0)”(最新版本),解决了未找到windows.h(以及其他错误)的问题。你可能需要其他选项,比如“C++ MFC for latest v142 build tools (x86 & x64)”(这是我看到的最新版本),以获取你的C++解决方案所需的所有内容。

-1

我遇到了这个错误:致命错误 lnk1104: 无法打开文件 'kernel32.lib'。这个错误是因为在 VC++ 目录中没有路径所致。要解决这个问题,

打开 Visual Studio 2008

  1. 进入 工具-选项-项目和解决方案-VC++ 目录-*
  2. 然后在右上角选择库文件
  3. 在这里,您需要添加 kernel132.lib 的路径

在我的情况下,它是 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib


-2

如果有人在Visual Studio中遇到此问题,请按照以下步骤操作:

  1. 运行Visual Studio安装程序
  2. 进入修改
  3. 取消选中旧版本的Windows SDK版本(对我来说,它是10.0.18??????)
  4. 选中最新版本的Windows SDK版本(对我来说,它是10.0.19??????)
  5. 点击确定,它将卸载旧的SDK并安装带有所有头文件的新SDK版本。

1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接