Runtime DLL needed even if static link

For years I had an annoying problem with CUDA 6.5, which I hoped would magically vanish with 8.0, but it has not. (No magic with computers, I guess.)

I link all of my apps with the static CUDA runtime library. Nevertheless, if I try to run the app on a machine without CUDA support software installed, when the app tries to start it is unable to do so, saying that it can’t find cudart64_80.dll. Why would it need the runtime dll when I linked it with the static runtime? This is very frustrating because it means I have to distribute the runtime dll to my clients, which for some reason always troubles them. Any thoughts? Thanks!

It shouldn’t. However, if you have a complex application that links to other libraries, one of those libraries may be looking for a dynamic link to cudart

It’s probably not possible to go further without more description or a complete example.

Txbob - Thank you for responding! I do not link to any libraries other than the usual Visual Studio runtime stuff and common Windows libraries. I don’t even use any of the CUDA libraries like FFT and whatever. Nothing specialized. It’s just a number-crunching program that uses CUDA for speed. I was hoping ‘Depends’ could identify who’s requiring the DLL, but it doesn’t give enough information. Is there any other tool that might tell me what’s causing this?

Anyhow, I’m up to my ears in work this week, but you’ve inspired me to seriously investigate this issue soon. I’ll start with a minimal app which does nothing except (presumably) demonstrate the problem. That may be all I need to track down the culprit. If not, I’ll post the minimal app here and see if any kind person will look at it. Thank you!


I would double-check the compile output in the VS console output window to ensure that the cudart linking is static. I’m pretty that is the default for any project, but it doesn’t hurt to check/verify.