背景:我在Visual Studio 2013中进行开发,目标是.Net 4.5,在Windows 7上运行。我一直在努力让DirectX在WPF环境中运行,并被提到SharpDX ,以及使用它的示例程序:http://sharpdxwpf.codeplex.com/SourceControl/latest#SharpDX.WPF.sln
当我尝试构建它时出现错误,因为'd3dcompiler_43.dll'丢失了。我通过明确下载DirectX最终用户运行时(https://www.microsoft.com/en-us/download/details.aspx?id=8109)
来解决这个问题我的问题:根据MSDN,DirectX已被折叠到Windows 8 SDK(https://blogs.msdn.microsoft.com/chuckw/2012/03/22/where-is-the-directx-sdk/)中,并且根据同一文档,它包含在Visual Studio 2012中。
由于我使用的是VS2013(专业版),我认为它也包含在内。那么为什么我必须明确下载DirectX最终用户包来获取我的DLL?或者Windows 8 SDK不包含旧版DLL? (如果是这样,遗留程序如何在Windows 8和10中运行?)有人可以向我解释实际的DirectX路线图吗?
答案 0 :(得分:1)
关于D3DCompile的故事被告知here。
简而言之,使用SharpDX软件包构建并不需要安装旧版DirectX SDK,但您确实需要部署旧的可选并排DLL。您可以通过安装DXSETUP来获取旧的#43版本。
有关旧版DirectX SDK组件部署的所有详细信息,请参阅Not So DirectSetup。
对于使用Direct 11或DirectX 12的现代应用程序,最好使用D3DCompile#47。它内置于Windows 8.1和Windows 10操作系统中,标头位于Windows 8.1 SDK中,Windows 8.1 SDK中有一个可重写的DLL,可用于Windows Vista SP2或更高版本&#39 ;并排侧'与您的应用一起部署。 SharpDX可能应该使用那个,但如果你想支持Windows XP,它们可能会坚持#43。
有关旧版DirectX SDK和DXSETUP部署的DLL的完整列表,请参阅KB179113。这些都不是由Windows SDK部署的,也不是任何版本的Windows操作系统都包含它们。