Graphics debugging with Nsight fails due to missing D3DCOMPILER_47.dll

Hello all,

I’ve just downloaded Nsight 4.7 for the first time and gone through the setup as described by the user guide. Unfortunately I can’t successfully launch my program using any of the Nsight menu options (Start Graphics Debugging, Start Performance Analysis, etc.) because doing so produces the fatal error “The program can’t start because D3DCOMPILER_47.dll is missing from your computer.”

This error does not occur normally (i.e. running the application outside of the Nsight debugging options).

I’m running Visual Studio Community 2013 with the latest July 20 update, on Windows 7, and I have the Windows 8.1 SDK installed.

I’m satisfied that d3dcompiler_47.dll is available on the system, and it can be found in the Visual Studio VC/bin folder, as well as the Windows 8.1 SDK bin/x86 and bin/x64 folders.

I’m presently just interested in the Graphics HUD, Shader Debugger and Frame Debugger, so I don’t have the CUDA framework installed (which I don’t think is needed by Nsight).

I’d greatly appreciate any help.

I should add, although I doubt it’s relevant to the issue, that my system has a GeForce GTX 760 with the latest 353.30 driver installed.

OK, I’ve found a solution:

As it turns out, the DLL is not a system component and must be in the local path of the executable - it isn’t required by my application (so it’s not there), but is needed by Nsight for run-time shader compilation.

So the solution is just to copy the DLL over to the local path of the executable for any application that uses Nsight.

This is a major gotcha, and I didn’t see it in the Nsight documentation anywhere. Might be worth adding.

Hi Jumuulian,

It’s hard to say why, something need to confirm:

  • Could you run your sample just double click it in your file explorer? I mean not copy d3dcompiler_47.dll to your sample’s folder
  • Do you find d3dcompiler_47.dll in Nsight installment folder?

Thanks
An

Hi AYan, I’m now thinking I have gotten this wrong.

The following link explains that d3dcompiler_46.dll or d3dcompiler_47.dll are required to be shipped with an application using the run-time shader compilation: Where is the DirectX SDK? - Win32 apps | Microsoft Docs. I had assumed that it was Nsight that required (and was missing) the DLL since I can run my application normally through Visual Studio without Nsight.

However, my application does indeed use the D3DCompile function which requires d3dcompiler_47.dll, and so must be distributed with this DLL. Since there is a copy of the DLL in the Visual Studio bin folder, I hadn’t yet discovered that it was missing from my build since I have (thus far) only run the application through Visual Studio. Indeed, double-clicking the application exe (after removing the DLL) causes the error.

Thanks for your help!

Hi Jmuulian,

That’s fine, let us close this one and force another one.

Thanks
An