使用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)我的怀疑是微软已经不再使用dll for DirectX,现在它只是静态链接。这可以解释为不需要重新分配任何dll。我也没有在我的C:\ Windows \ System32目录中看到任何d3d11 dll,这似乎支持这种怀疑。但是,d3d11.lib只有15kb,这让我相信某处必须有一个dll。这是以某种方式包含在Windows中吗?即使是全新的Windows 7安装?它是否随Windows Update一起发布?
如果我的担忧有效,有人能告诉我吗?我只是想确保我的安装程序包含Windows 7或更高版本的用户运行我使用Windows 10 SDK中的DirectX 11的程序所需的所有内容。
答案 0 :(得分:3)
自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和旧版Managed 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取代,MSDN是Windows SDK的一部分。它全部内联,因此没有链接库或DLL
。
不推荐使用D3DX9,D3DX10和D3DX11的所有版本,XACT也是如此。请参阅Living without D3DX和A Brief History of Windows SDKs。
对于Windows SDK,您拥有" DirectX"的标题和链接库。 DLLs
是操作系统的一部分。请参阅HLSL, FXC, and D3DCompile。
要支持Windows 7开发,您可以使用Windows桌面应用程序重新编写D3DCompile#46,D3DCompile#47,D3DCSX#46和D3DCSX#47 DLLs
应用程序本地。这些是您找到的REDIST文件。请参阅The Zombie DirectX SDK。
使用Windows 8.1,操作系统中还包含D3DCompile#47。如果您需要Windows 8.1或Windows 10作为最低规格,那么您甚至不需要将其应用于本地。
总而言之:您可以编写和发布适用于Windows 7的Direct3D 11应用程序,而根本不使用旧版DirectX SDK或旧版DXSETUP。这里的一个例外情况是,如果你需要使用XAudio 2.7,在这种情况下你应该将标题和REDIST减少到这种情况下的绝对最小值。
请参阅Where is the DirectX SDK (2015 Edition)?和DirectX SDK Samples Catalog
至于各种DirectX SDK示例和工具的最终位置,请参阅DirectX SDK Tools Catalog和{{3}}。