【问题标题】:VS 2017 won't find DirectX include filesVS 2017 找不到 DirectX 包含文件
【发布时间】:2018-03-27 02:09:05
【问题描述】:

我已经安装了 DirectX SDK,我想在 Visual Studio 2017 中的 C++ 项目中使用。我配置了 C++ 包含路径并添加了一个目录,其中包含正确解析为 @987654323 的 DirectX SDK 包含文件 ($(DXSDK_DIR)Include\) @所有文件所在的位置

但是当我尝试#include <d3dx9core.h> 时,我检查了自己,它已正确安装在Include 目录中,它说它找不到该文件。

我该如何解决这个问题?

【问题讨论】:

  • 您确定要处理已弃用的 DirectX9 吗?现代 DirectX SDK 是 Windows SDK 的一部分,还有DirectX Toolkit auxiliary library
  • @VTT 是的,DirectX9 是必需的。
  • 您的解决方案中有 1 个项目吗?您是否为所有平台/配置组合设置了包含路径?
  • @ArtemyVysotsky 不,我的解决方案中有多个项目,但这是唯一使用它的项目,是的,我已经为所有组合设置了它。
  • 尝试以下操作 - 转到 Tools/Options/Projects and Solutions/Build and Run 并将构建输出详细程度设置为诊断。然后只编译一个包含<d3dx9core.h> 的cpp 文件并检查输出。您将看到所有环境变量设置和实际用于编译此文件的IncludePath =。查看 DX 文件夹是否正确添加到此条目中。也许它与下一条路径相结合......

标签: c++ directx visual-studio-2017 directx-9


【解决方案1】:

要将旧版 DirectX SDK 与 VS 2010 或更高版本一起使用,您必须手动添加对 include/lib 路径的引用。这通常通过编辑项目的 VC++ 目录 设置来完成,将 DirectX SDK 文件夹放在首位。

要将旧版 DirectX SDK 与 VS 2012 或更高版本一起使用,您需要使用 reverse 路径顺序——在标准文件夹之后列出 DirectX SDK 文件夹——因为 Windows 8.x / Windows 10 SDK 包含比旧版 DirectX SDK更新的标头。当然,没有更新版本的 D3DX9 标头。

对于 x86/Win32 配置:

$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x86
$(IncludePath);$(DXSDK_DIR)Include
$(LibraryPath);$(DXSDK_DIR)Lib\x86

对于 x64 原生配置:

$(ExecutablePath);$(DXSDK_DIR)Utilities\bin\x64;$(DXSDK_DIR)Utilities\bin\x86
$(IncludePath);$(DXSDK_DIR)Include
$(LibraryPath);$(DXSDK_DIR)Lib\x64

Microsoft Docs 解决了执行此操作时的一些已知问题。例如,您应该在包含 d3dx9.h 之前显式包含 d3d9.h,否则您将得到较旧的 d3d9.h 标头。

顺便说一句,dxerr.lib 静态库与 VS 2015/VS 2017 C/C++ 运行时不兼容。 Where’s DXERR.LIB?

最后一个问题:Windows 8.x 或 Windows 10 不支持 Direct3D 9 调试设备。

请务必查看Where is the DirectX SDKNot So DirectSetupDXSETUP Update

您还应该查看Living without D3DXDirectX SDK Tools CatalogDirectX SDK Samples CatalogThe Zombie DirectX SDK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2017-10-30
    • 2018-06-04
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多