当使用2010年6月的DirectX SDK编写程序时,为了让程序能在全新的Windows安装环境中运行,需要在安装程序中包含几个可重新分发的cab文件。
现在DirectX已经包含在Windows SDK中,但我一直没有找到关于在构建安装程序时是否需要任何形式的可再分发文件的信息。假设我使用的是Windows 10 SDK。我的程序能在全新的Windows 7上运行吗?还是说我遗漏了某种重新分发的文件?
这是我自己发现的。
1)似乎在Windows 10 SDK目录中有一个 "Redist "目录,其中包含了d3dcompiler_47.dll和d3dcsx_47.dll。我的假设是,如果等价的lib是链接的,那么我就需要将这些dll与我的应用程序一起重新发布,否则就不需要。是这样吗?
2) 我怀疑微软已经不再使用DirectX的dlls,现在只是静态链接。这可以解释为什么不需要重新分发任何dlls。我也没有在我的C:\\Windows/System32目录下看到任何d3d11的dlls,这似乎支持这个怀疑。然而,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 "的东西从Windows XP Service Pack 2开始就是操作系统的一部分,只能通过Windows Update、Service Packs或新版本的操作系统来更新。
关于 Direct3D 11 Runtime 的一般部署,请参见 游戏开发者的Direct3D 11部署. 这里的简单回答是:要求Windows 7作为你的最低规格,不用担心:) 。
唯一的事情是 DXSETUP
曾经安装的是 "可选并排 "的组件。DLLs
如D3DX9, D3DX10, D3DX11, XInput 1.3, XAudio 2.7, XACT, D3DCompile #43, D3DCSX #43, 以及传统的Managed DirectX 1.1汇编。
随着Windows 8。XInput 1.4 和 XAudio 2.8 也被添加到操作系统中。XInput 1.4和XAudio 2.8从来没有被DXSETUP安装过,但是旧的XInput 9.1.0包含在Windows Vista或更高版本中,通常已经足够满足大多数需求。
XNAMath 被替换为 DirectXMath 它是Windows SDK的一部分。都是内联的,所以它没有链接库或 DLL
.
D3DX9、D3DX10和D3DX11的所有版本都已废弃,XACT也是如此。参见 MSDN 和 没有D3DX的生活.
对于Windows SDK,你有 "DirectX "的头文件和链接库。DLLs
是操作系统的一部分。见 Windows SDK简史.
为了支持Windows 7开发,你可以REDIST D3DCompile #46、D3DCompile #47、D3DCSX #46和D3DCSX #47。DLLs
应用程序-本地与您的Windows桌面应用程序。这些就是你找到的REDIST文件。请看 HLSL, FXC, 和 D3DC 编译。.
对于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兼容版本。
请看 Zombie DirectX SDK 和 DirectX SDK(2015版)在哪里?
至于各种DirectX SDK样例和工具的最终去向,请见 DirectX SDK样本目录 和 DirectX SDK工具目录.