Reputation: 8271
Background: I've developing in Visual Studio 2013 and targeting .Net 4.5, running on Windows 7. I've been trying to get DirectX to run in a WPF context and was referred to SharpDX, and to a sample program using it: http://sharpdxwpf.codeplex.com/SourceControl/latest#SharpDX.WPF.sln
When I tried to build it I got errors because 'd3dcompiler_43.dll' was missing. I fixed that by explicitly downloading the DirectX End User Runtimes (https://www.microsoft.com/en-us/download/details.aspx?id=8109)
My Question: According to MSDN DirectX has been folded into the Windows 8 SDK (https://blogs.msdn.microsoft.com/chuckw/2012/03/22/where-is-the-directx-sdk/), and according to the same document it is included with Visual Studio 2012.
Since I'm using VS2013 (Professional) I assumed that it's also included in that. So why did I have to explicitly download the DirectX End User package to get my DLL? Or does the Windows 8 SDK not include legacy DLL's? (and if so, how are legacy programs supposed to work in Windows 8 and 10?) Could someone please explain the DirectX roadmap in practical terms to me?
Upvotes: 1
Views: 165
Reputation: 41057
The story around D3DCompile is told here.
In short, building with the SharpDX package doesn't require you have the legacy DirectX SDK installed, but you do need the old optional side-by-side DLLs it deployed. You can get the old #43 version by installing DXSETUP.
See Not So DirectSetup for all the details on the legacy DirectX SDK component deployment.
For modern apps using Direct 11 or DirectX 12, you'd be better off using D3DCompile #47. It's built into the Windows 8.1 and Windows 10 OS, the headers are in the Windows 8.1 SDK, and there's a redistable DLL in the Windows 8.1 SDK that you can use for Windows Vista SP2 or later 'side-by-side' deployed with your app. SharpDX should probably be using that one, but they are likely sticking with #43 in case you want to support Windows XP.
For a full list of the DLLs that were deployed by the legacy DirectX SDK and DXSETUP, see KB179113. None of these are deployed by the Windows SDK nor are any of them included with any version of the Windows OS.
Upvotes: 1