【问题标题】:Is it necessary to redistribute DirectX from the Windows SDK?是否有必要从 Windows SDK 重新分发 DirectX?
【发布时间】:2015-10-21 04:14:29
【问题描述】:

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

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

【问题讨论】:

    标签: windows installation directx directx-11 redistributable


    【解决方案1】:

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

    对于 Direct3D 11 Runtime 部署的一般情况,请参阅Direct3D 11 Deployment for Game Developers。这里的简短回答是:要求 Windows 7 作为您的最低规格,不用担心 :)

    DXSETUP 唯一安装的是“可选并排”组件DLLs,例如 D3DX9、D3DX10、D3DX11、XInput 1.3、XAudio 2.7、XACT、D3DCompile #43、D3DCSX #43 和旧版托管 DirectX 1.1 程序集。

    请参阅 Not So DirectSetup 和 KB179113。

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

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

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

    对于 Windows SDK,您拥有“DirectX”DLLs 的标头和链接库,它们是操作系统的一部分。见A Brief History of Windows SDKs。

    要支持 Windows 7 开发,您可以使用 Windows 桌面应用程序对 D3DCompile #46、D3DCompile #47、D3DCSX #46 和 D3DCSX #47 DLLs application-local 进行 REDIST。这些是您找到的 REDIST 文件。见HLSL, FXC, and D3DCompile。

    在 Windows 8.1 中,D3DCompile #47 也包含在操作系统中。如果您需要 Windows 8.1 或 Windows 10 作为最低规格,那么您甚至不需要应用程序本地。

    总结一下:您可以编写和发布可在 Windows 7 上运行的 Direct3D 11 应用程序,而完全不使用旧版 DirectX SDK 或旧版 DXSETUP。 这里的一个例外情况是如果您需要使用 XAudio 2.7,在这种情况下,您应该将标题和 REDIST 修剪到这种情况下的绝对最小值。 更新: 请参阅XAudio2Redist 表示最新 XAudio 2.9 的 Windows 7 兼容版本。

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

    关于各种 DirectX SDK 示例和工具的最终结果,请参阅 DirectX SDK Samples Catalog 和 DirectX SDK Tools Catalog。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多