找不到用于DirectX编程的d3dcompiler_43.dll

Vac*_*ano 16 c++ directx windows-8 windows-runtime visual-studio-2012

我正在尝试学习DirectX编程.但我遇到了障碍.

我好像错过了这个文件:d3dcompiler_43.dll

我安装了(按此顺序):

  1. Visual Studio 2012
  2. Windows 8
  3. Windows Phone 8 SDK
  4. Windows 8 SDK

我想我需要一个DirectX SDK,但这个链接说我没有:

从Windows 8开始,DirectX SDK作为Windows SDK的一部分包含在内.

我应该只安装DirectX Distributable吗?我担心会给我这个dll但是我也会遗漏其他的东西......

这是我得到的确切错误:

无法加载DLL"d3dcompiler_43.dll":找不到指定的模块.(来自HRESULT的异常:0x8007007E)

更新: 我跑了dxdiag,它说我安装了DirectX 11 ......不知道为什么我不能让这个工作.

Vac*_*ano 15

我在这里找到答案:http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx

它说:

使用运行时着色器编译的任何项目都必须将D3DCOMPILER_46.DLL复制到项目的本地可执行路径.此DLL在Windows SDK安装的此子目录中可用于%ProgramFiles(x86)%\ Windows Kits\8.0\Redist\D3D\arch,其中arch是x86和x64.


小智 5

有关D3DCompile以及如何分发其各种版本的详细信息,请参阅此博客文章 ...

简而言之:

  • #43和先前版本由传统的DirectX最终用户运行时重定向程序(也称为DirectSetup)部署.
  • #46由VS 2012/Windows 8.0 SDK安装,并与您的Win32桌面应用程序"并排"部署
  • #47由VS 2013/Windows 8.1 SDK安装,可与您的Win32桌面应用程序"并排"部署,但它也包含在Windows 8.1操作系统中.