X1507 Visual Studio 2015无法打开源文件:" Windows.h"

时间:2016-11-11 03:50:21

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

我正在尝试学习DirectX 11,目前正致力于照明。我需要为场景添加一个Directional灯,但是当我设置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

我还尝试在&#34; C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include \&#34;中找到直接文件路径。它只是抛出了一个关于无法从Windows.h中包含另一个头的错误。我认为这是&#34; excpt.h&#34;

3 个答案:

答案 0 :(得分:0)

刚刚完成本教程....可能你可以轻松解决你的问题... https://www.braynzarsoft.net/viewtutorial/q16390-braynzar-soft-directx-11-tutorials

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用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