【问题标题】:X1507 Visual Studio 2015 Failed to open source file: "Windows.h"X1507 Visual Studio 2015 无法打开源文件:“Windows.h”
【发布时间】:2016-11-11 03:50:21
【问题描述】:

我正在尝试学习 DirectX 11,目前正在研究照明。我需要在场景中添加一个定向光,但是当我设置我的 LightHelper.h 文件时,它拒绝编译。它抛出错误X1507“无法打开源文件:Windows.h”。

我尝试卸载 Windows SDK 并重新配置一些包含选项,但无济于事。这是我的头文件代码。

    #pragma once

    #include <Windows.h>
    #include <DirectXMath.h>

    struct DirectionalLight
    {
        DirectionalLight()
        {
            ZeroMemory(this, sizeof(this));
        }

        DirectX::XMFLOAT4 Ambient;
        DirectX::XMFLOAT4 Diffuse;
        DirectX::XMFLOAT4 Specular;
        DirectX::XMFLOAT3 Direction;
        float Pad;
    };

    struct Material
    {
        Material()
        {
            ZeroMemory(this, sizeof(this));
        }

        DirectX::XMFLOAT4 Ambient;
        DirectX::XMFLOAT4 Diffuse;
        DirectX::XMFLOAT4 Specular;
        DirectX::XMFLOAT4 Reflect;
    };

这不是 Windows.h 的唯一头文件(当然),但所有其他的链接都没有问题......我已经尝试了几天了。比较烦人。

谢谢

编辑:这些是我尝试过的解决方案。

Cannot open Windows.h

https://software.intel.com/en-us/articles/error-cannot-open-source-file-windowsh-in-gfx-sampleszip-shipped-with-intelr-c-compiler-150

我还尝试在“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\”中查找直接文件路径。它只是引发了另一个错误,即无法包含来自 Windows.h 的另一个标头。我认为是“excpt.h”

【问题讨论】:

  • 不用大写的W试试
  • 它会抛出同样的错误。 :(
  • 不同的项目会发生什么?一个简单的小hello world,包含windows.h只是为了看看它是否可以?
  • 创建了一个空白项目并按照您的建议进行操作 - 一个快速的 hello world - 并且没有弹出错误。
  • 听起来 IDE 还可以。项目中有问题。您是从头开始制作该项目,还是从 Internet 下载并可能期待不同的工具布局或 Visual Studio 版本?

标签: c++ windows sdk include directx-11


【解决方案1】:

在 Visual C++ 2015 中,您使用的是 Windows 8.1 SDK(默认)或 Windows 10 SDK。在这两种情况下,您的路径中已经有 DirectXMathD3DCompile 和其他 Direct3D 标头,以及标准 Windows SDK 中的 FXC 着色器编译器。

如果您需要使用 D3DX11 等旧版组件,您可以添加旧版 DirectX SDK 路径,但您应该在 VC++ 目录属性中在标准路径之后而不是之前添加。

$(VC_IncludePath);$(WindowsSDK_IncludePath);$(DXSDK_DIR)Include

$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;$(DXSDK_DIR)Lib\x86

$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;$(DXSDK_DIR)Lib\x64

参见Where is the DirectX SDK?Where is the DirectX SDK (2015 Edition)?

当然,理想情况下,您应该完全避免使用旧版 DirectX SDK。见Living without D3DX

【讨论】:

    【解决方案2】:

    只需阅读本教程......也许你可以轻松解决你的问题...... https://www.braynzarsoft.net/viewtutorial/q16390-braynzar-soft-directx-11-tutorials

    【讨论】:

    • 我通过删除一个文件解决了我的问题,但我从头开始另一个项目以更好地了解 DirectX 11。我正在使用本教程,它很棒!它需要一些更新,因为它使用的几个库现在已被弃用,但一些快速的谷歌搜索解决了这个问题。非常感谢! +1 --- 不会出现,因为我
    【解决方案3】:

    当您添加 DirectX 标头时,您将标头搜索路径更改为 DirectX 的搜索路径。这不应该是一个更改,你应该添加到现有列表的路径。您有效地删除了 Windows.h 的路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多