请任何人告诉我是否可以静态链接所有directx库。
基本上,我可以构建一个可以在任何没有安装 directx redistribu 的 Windows 系统上运行的 exe 吗?
2 回答
如前所述,您不能静态链接“DirectX”库,即 Direct3D、DirectInput、DirectSound 等。也就是说,完全取决于您对“任何 Windows 系统”的定义,您实际上不需要DirectX“Redist”。它不会做你认为它会做的事情。有关此问题的详细讨论,请参见Not So DirectSetup。
如果您使用 Direct3D 9 或更高版本、DirectDraw、DirectSound 8、DirectInput 8、DirectShow、DirectMusic、DirectPlay 等,即历史上被称为“DirectX 9.0c”(又名 2004 年夏季版本),这些位始终存在于 Windows从 Windows XP Service Pack 2、Windows Server 2003 Service Pack 1 和 Windows XP x64 Edition 开始。因此,只要您需要这些作为您的最低操作系统(或更高版本),您就不需要任何 DirectX Redist,因为它实际上并没有安装任何这些东西。看看什么是版本号?例如“你必须这么高才能骑这个”检查来保证这一点。支持Windows 2000、Windows 9x、
对于 Direct3D 11,请阅读面向游戏开发人员的 Direct3D 11 部署。Direct3D 11.0 内置在 Windows 8.x 和 Windows 7 中。它位于 Windows Vista Service Pack 2 上,安装了由 Windows Update 推送的 KB 971644,因此它基本上无处不在。
如果您在 DirectX SDK中使用其他内容,则变得模糊不清:
D3DX9、D3DX10 和 D3DX11 的所有版本均已弃用(请参阅MSDN)。如果您依赖这些,您仍然需要旧版 DirectSetup。好消息是使用 Direct3D 11,您根本不需要使用它。相反,请参阅Living without D3DX以获取静态链接到您的应用程序以及可用共享源的一堆新支持库- 其中包括另一个答案中提到的DirectX Tool Kit 。
HLSL 编译器实际上不再存在于 D3DX 中,如果您使用 D3DCompile 的 Windows 8.x SDK 版本,您可以将该 DLL 与您的应用程序并排部署,而无需使用 DirectX Redist。请参阅HLSL、FXC 和 D3DCompile。请注意,此 DLL 仅支持 Windows Vista 或更高版本,因此 Windows XP 上的运行时 HLSL 编译仍需要旧版 DirectX SDK 和 DirectX Redist。如果您预先构建着色器并且不使用效果 (FX) 框架,这不是问题。
如果您使用 XINPUT,则应使用 XINPUT 9.1.0(原始版本),除非您专门使用 XInput 1.3 的耳机音频功能。此版本内置于 Windows Vista 及更高版本中。如果您需要 Windows 8.0 或更高版本,您可以使用 XInput 1.4。请参阅XINPUT 和 Windows 8。请注意,Windows 的服务器版本没有 XInput 9.1.0 或 1.4。
如果您使用的是 XAUDIO2,那么您可以做出选择。如果您需要 Windows 8.0 或更高版本,那么您可以使用 XAudio 2.8,因为它内置在操作系统中。否则,您需要使用 XAudio 2.7,它仍然需要部署旧版 DirectX REDIST。请参阅XAudio2 和 Windows 8。
如果您使用 XACT,那么您必须使用旧版 DirectX REDIST,因为这是部署 XACT 引擎的唯一方法。
如果您使用的是用于 .NET 1.1 的旧版 DirectX 托管程序集,出于多种原因,您应该迁移到SlimDX或SharpDX 之类的其他东西。请参阅DirectX 和 .NET
如果您正在使用其他“DirectX”的东西,您应该阅读特定年龄的 DirectX SDK 以获得一些指导。简而言之:不要使用Direct3D Retained Mode、DirectPlay Voice或DirectX 7/8 Visual Basic 6.0,因为它们不在从 Windows Vista 开始的操作系统中。
No, the DirectX redist binaries are not available as static libs, though most of the useful functionality is now available as source in the DirectX Tool Kit.