是否需要从 Windows SDK 重新分发 DirectX?

Is it necessary to redistribute DirectX from the Windows SDK?

使用 2010 年 6 月版的 DirectX SDK 编写程序时,需要在安装程序中包含几个可再分发的 cab 文件,以便在全新 Windows 安装中安装程序 运行。

DirectX 现在包含在 Windows SDK 中,但我无法找到有关构建安装程序时是否需要任何类型的可再分发文件的信息。假设我使用 Windows 10 SDK。我的程序只能在全新的 Windows 7 安装上运行吗?还是我缺少某种可再分发的东西?

这是我自己发现的:

1) Windows 10 SDK 目录中似乎有一个"Redist" 目录,其中包含d3dcompiler_47.dll 和d3dcsx_47.dll。我的假设是,如果链接了等效的库,那么我将需要在我的应用程序中重新分发这些 dll,否则我不需要。是这样吗?

2) 我怀疑 Microsoft 已经不再使用 DirectX 的 dll,它现在只是静态链接。这将解释不需要重新分发任何 dll。我在 C:\Windows\System32 目录中也没有看到任何 d3d11 dll,这似乎支持了我的怀疑。但是,d3d11.lib 只有 15kb,这让我相信某处一定有一个 dll。这是否以某种方式包含在 Windows 中?即使是全新的 Windows 7 安装?它是否与 Windows 更新一起分发?

谁能告诉我我的担忧是否成立?我只是想确保我的安装程序包含 Windows 7 或更新版本的用户 运行 我的程序需要的所有内容,该程序使用 Windows 10 SDK 中的 DirectX 11。

自 2004 年以来,DirectSetup(又名 DXSETUP从未 安装 "DirectX"。它不安装 Direct3D、DirectDraw、DirectSound、DirectInput、DirectPlay、DirectSound、DirectMusic、DirectShow 等。您可以调用的所有内容 "DirectX" 都是 OS 自 Windows XP Service Pack 的一部分2 并且只能通过 Windows 更新、Service Pack 或操作系统的新版本进行更新。

For Direct3D 11 Runtime deployment generally, see Direct3D 11 Deployment for Game Developers. The short answer here is: require Windows 7 as your minimum spec and don't worry about it :)

唯一 DXSETUP 安装的是 'optional side-by-side' 个组件 DLLs,例如 D3DX9、D3DX10、D3DX11、XInput 1.3、XAudio 2.7、XACT、D3DCompile #43、D3DCSX #43 ,以及遗留的托管 DirectX 1.1 程序集。

参见 Not So DirectSetup and KB179113

随着 Windows 8,XInput 1.4 and XAudio 2.8 也被添加到 OS。 DXSETUP 从未安装 XInput 1.4 和 XAudio 2.8,但旧的 XInput 9.1.0 包含在 Windows Vista 或更高版本中,通常足以满足大多数需求。

XNAMath 被 DirectXMath 取代,后者是 Windows SDK 的一部分。它都是内联的,所以它没有 link 库或 DLL.

D3DX9、D3DX10 和 D3DX11 的所有版本均已弃用,XACT 也是如此。参见 MSDN and Living without D3DX

对于 Windows SDK,您有 headers 和 link 库用于 "DirectX" DLLs,它们是 OS.参见 A Brief History of Windows SDKs

为了支持 Windows 7 开发,您可以重新分配 D3DCompile #46、D3DCompile #47、D3DCSX #46 和 D3DCSX #47 DLLs application-local使用您的 Windows 桌面应用程序。这些是您找到的 REDIST 文件。参见 HLSL, FXC, and D3DCompile

With Windows 8.1, D3DCompile #47 is also included with the OS. If you require Windows 8.1 or Windows 10 as your minimum spec, then you don't even need to have it application-local.

总结一下: 您可以编写和发布适用于 Windows 7 的 Direct3D 11 应用程序,而不使用旧版 DirectX SDK 或旧版根本没有DXSETUP。 这里的一个例外情况是如果您需要使用 XAudio 2.7,在这种情况下您应该 trim 降低 headers 和 REDIST 到这种情况的绝对最小值。 更新:请参阅 XAudio2Redist 以获得最新 XAudio 2.9 的 Windows 7 兼容版本。

The Zombie DirectX SDK and Where is the DirectX SDK (2015 Edition)?

As for where the various DirectX SDK samples and tools ended up, see DirectX SDK Samples Catalog and DirectX SDK Tools Catalog.