【问题标题】:Cannot open Windows.h in Microsoft Visual Studio无法在 Microsoft Visual Studio 中打开 Windows.h
【发布时间】:2012-09-26 18:22:57
【问题描述】:

首先:我使用的是 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

【问题讨论】:

    标签: c++ windows visual-studio kinect


    【解决方案1】:

    如果您还没有这样做,请尝试将"SDK Path\Include" 添加到:

    Project → Preferences → C/C++ → General → Additional Include Directories
    

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

    Project → Preferences → Linker → General → Additional Library Directories
    

    另外,尝试将"Windows.h" 更改为&lt;windows.h&gt;

    如果没有帮助,请检查文件的物理存在,它应该在 Visual Studio 安装目录的“\VC\PlatformSDK\Include”文件夹中。

    【讨论】:

    • 一些答案​​:我使用的是 Visual Studio 的终极版,我尝试了您帖子中的所有内容(包括和 lib),并将“Windows.h”更改为 。没有任何效果。此外,PlatformSDK 文件夹在 -MVS2012-/VC/ 中不存在,但在 WindowsSDK/Include 文件夹中存在
    • 为清楚起见:在 2014 年 11 月 12 日编辑后,添加了正确的步骤,因此这是正确的答案。
    • @Choufler 我已将 Include 和 Lib 文件添加到项目中,但 "\VC\PlatformSDK\Include" 文件夹中不存在 windows.h。
    • 添加由变量表示的路径也适用于我 $(WindowsSdkDir)\include 和 $(WindowsSdkDir)\lib
    • @PavelRogovoy 您能否详细说明如何在仅命令行的构建机器上执行此操作?这是一个路径变量还是我必须在某个配置文件中设置它?
    【解决方案2】:

    启动 Visual Studio。转到工具-> 选项并展开项目和解决方案。 从树中选择 VC++ 目录,然后从右侧的组合中选择包含文件。

    你应该看到:

    $(WindowsSdkDir)\包括

    如果缺少此内容,则表明您发现了问题。如果没有,请搜索文件。它应该位于

    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

    【讨论】:

    • 在 Windows 10 上:C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\um\Windows.h
    • 在 Windows 10 上是 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
    • 对于 Visual Studio 2013,在 VC++++ 中,路径是用分号分隔的。所以我不得不添加一个分号,然后是路径:Ex。 $(IncludePath);$(VCInstallDir)atlmfc\include;C:\Program Files\Microsoft SDKs\Windows\v7.1\Include
    • 在 vs17 中它说它已被弃用。所以我无法编辑它,但问题仍然存在
    • 在 Visual Studio 2017 中:“在工具 > 选项中编辑的 VC++ 目录已被弃用。VC++ 目录现在可用作默认添加到所有项目的用户属性表。" 单击? 会进入在线帮助页面:docs.microsoft.com/en-us/cpp/ide/vcpp-directories-property-page
    【解决方案3】:

    如果您的目标是 Windows XP (v140_xp),请尝试安装 Windows XP Support for C++

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

    检查您项目的平台工具集中指定了哪个 Windows SDK 版本。 (Project → Properties → Configuration Properties → General)。如果您的工具集以 _xp 结尾,则需要安装 XP 支持。

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

    另见:

    【讨论】:

      【解决方案4】:

      就我而言,我必须右键单击解决方案并单击“重新定位项目”。 就我而言,我重新定位到 Windows SDK 版本 10.0.1777.0 和 Platform Toolset v142。我还得把"Windows.h"改成&lt;windows.h&gt;

      我在 Windows 10 机器上运行 Visual Studio 2019 版本 16.25

      【讨论】:

        【解决方案5】:

        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

        我解决了以下问题:

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

        谢谢。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            我收到此错误致命错误 lnk1104:无法打开文件“kernel32.lib”。出现此错误是因为 VC++ 目录中没有路径。解决这个问题

            打开 Visual Studio 2008

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

            在我的例子中是 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

            【讨论】:

              【解决方案8】:

              如果有人在 Visual Studio 中遇到此问题,请执行以下步骤:

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

              【讨论】:

              • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-05-19
              • 1970-01-01
              • 2020-11-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-02-20
              相关资源
              最近更新 更多