c++ - directx 9 找不到包含库

标签 c++ visual-studio-2010 directx

我想开始在 Visual C++ 2010 中学习 DirectX,但它说当我包含 d3dx9.h 时找不到 d3dx11 和 d3dx9,我可以在 DirectX 11 中玩游戏并且 dxdiag 说我的电脑正在运行 directX 11,但是当我在 C 盘和我的 D 盘中搜索 DirectX 11 时,它找不到任何东西。所以我决定安装 DirectX 11 然后我安装后得到一个文件夹,但它没有任何包含或 bin 文件夹,所以我无法转到属性和 VC++ 并添加包含目录。决定尝试 DirectX 9 而不是开始,但是当我安装 DirectX 9 June 2010 版本时,我去了 C\Microsoft DirectX SDK(2010 年 6 月)没有目录,只有 DirectX 实用程序和 c++ 的文档以及示例浏览器和命令提示符.所以我真的不知道该怎么做了,我尝试安装 d3dx9.lib 并放入 VS 2010 的默认 lib 文件夹中。但没有成功,但我有 DirectX 9 2004 夏季库和包含文件夹设置visual c++,但那是一个很旧的版本,所以它不包括 d3dx9.lib。我正在运行 Windows 8.1 64 位操作系统。

最佳答案

DirectX SDK 和所有版本的 D3DX 库均已弃用。

“现代”解决方案是使用 Visual Studio 2012 和 Visual Studio 2013 附带的 Windows 8.x SDK。您可以“独立”安装 Windows 8.1 SDK,并使用 .props 将其与 Visual Studio 2010 一起使用。文件。参见 MSDNthis blog发布所有详细信息。

可以将 Windows 8.x SDK 与旧版 DirectX SDK 混合使用,以便继续将 D3DX 用于 Win32 桌面应用程序——您不能将 DirectX SDK 用于 Windows 应用商店应用、Windows电话,或 Xbox One。请参阅 MSDN 上的说明了解如何处理 include/lib 路径目录。如果您打算继续使用旧版 DirectX SDK,则需要注意以下几点:

  • DirectX SDK(2010 年 6 月)安装程序与安装了 VS 2010 SP1 REDIST 的系统存在一些兼容性问题。参见 this发布。
  • DirectX SDK(2010 年 6 月)没有适用于 Windows 8.1 的最新开发人员调试运行时。您必须安装 Windows 8.1 SDK、VS 2013 或 VS 2013 远程调试工具才能获取 DEBUG 层和 REFERENCE 设备。参见 this发布。
  • 在 Windows 8.1 上支持 Direct3D 9 DEBUG 设备。
  • DirectX SDK 中的“PIX for Windows”工具不适用于安装了 DirectX 11.1 运行时的 Windows 8.1、Windows 8.0 或 Windows 7 SP1 上的 Direct3D 10.x 或 Direct3D 11.x。使用 Visual Studio 2013 Graphics Diagnostics,或 Intel/AMD/NVIDIA 的 GPU 工具。
  • 如果您部署的游戏需要 D3DX 等传统 DLL,请务必使用 2011 年 4 月更新的 DXSETUP 版本,而不是 DirectX SDK(2010 年 6 月)中的拷贝。参见 this发布并务必阅读 Not So DirectSetup .

考虑到所有这些,如果您只使用 Direct3D 11 并完全避免使用旧版 DirectX SDK 和 D3DX,您的生活将会轻松很多。您可以找到许多 D3DX 的 Direct3D 11 替代品,它只需要 Windows 8.x SDK 以及一堆更新的示例。参见 Living Without D3DX , DirectX Tool Kit , 和 DirectX SDK Samples Catalog .您可以获得与 VS 2010 一起使用的所有这些,但是获得 Visual Studio 2013 Express for Windows Desktop(对于 Win32 桌面应用程序)和/或 Visual Studio 2013 Express for Windows(对于 Windows Store 应用程序和 Windows phone 应用程序)要容易得多.

PS:即使在 DirectX SDK 仍然是获取 VS 2010 的 Direct3D header 的受支持方式的时候,它也不可用,直到您手动将包含/路径目录添加到您的项目中。这就是您不能在新创建的项目中包含“d3dx9.h”的原因。

关于c++ - directx 9 找不到包含库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303922/

相关文章:

c++ - 为什么我的 bool 函数返回 true 会导致读取访问冲突?

c++ - 窗口处理管理器

css - IIS 无法识别 Bootstrap CSS 和 Javascript

C++ union 数据结构,轻松访问 DWORD 中的位

c++ - 从 uint32_t 转换为 wchar_t 并存储在 wstring 中时发生访问冲突

c++ - 我在哪里可以学习 DirectX 编程?

c++ - 如何将带有双反斜杠的字符串转换为单反斜杠

c++ - 大文件的霍夫曼树

c++ - stream seekg() 实现从 VS2012 到 2010 各不相同

c# - 如何将 "programmatically"与 Visual Studio 集成差异工具