我正在尝试学习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中唯一的头文件(当然),但所有其他链接都没有问题...我已经试图解决它几天了。这很烦人。
由于
编辑:这些是我尝试的解决方案。
我还尝试在&#34; C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include \&#34;中找到直接文件路径。它只是抛出了一个关于无法从Windows.h中包含另一个头的错误。我认为这是&#34; excpt.h&#34;
答案 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。在这两种情况下,您的路径中已经有DirectXMath,D3DCompile和其他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