I try to make a Windows component that uses Npp; this component is a directshow compressor filter.
I use VS2015CE and cuda 8.0 on Windows10.
I succeeded to compile and link this new component (in fact a dll), but registering the output directely from VS generates a MSB8011 error. Even if i try to register with regsvr32, i get an error, but 0x80070716.
Someone has an idea?
Thanks in advance for helping me.
are all the dll’s needed by your dll included in the same directory as your dll?
For example, depending on how you linked the dll, you may need the cuda runtime library dll as well as the npp library dll in your directory.
thanks for your reply Bob,
my component dépends on my own dll (say mycuda.dll, which works elsewhere) which dépends (from the tool ‘dependency walker’) on cudart64_80.dll, nppi64_80.dll, nppc64_80.dll, vcruntime140.dll, kernell32.dll. I added all these dll in the same folder as the one of my component, but this change Nothing.
As my component also dépends on other dlls (msdmo.dll, ole32.dll,…) than mycuda.dll, is it also necessary to add these ones on the same folder?
MSB8011 appears to be a somewhat generic error, so it may have nothing to do with the actual dlls.
I’m also not an expert on the windows search heuristics for dlls. I know that when building an application that depends on CUDA, the necessary dlls can be placed in the same directory as the application, and windows will find them there (the CUDA VS sample projects do this).
I’m not sure about the dll case. It may be that the necessary dependency dlls may need to be in the application search path, if that makes any sense.
And again, this MSB8011 error may have nothing to do with dll dependencies. I’m just guessing.
It might be useful for you to build a CUDA-independent filter (e.g. a simple pass-through, perhaps), and get that working first. If you still experience MSB8011 then it would have nothing to do with CUDA at that point.
Then if you get the MSB8011 error only when integrating CUDA into the DLL, that may help to narrow things down. If possible I would be sure to use proper CUDA error checking, especially on the first few CUDA calls in the DLL, to see what error codes are returned, if any, during the “registration” process.
It may also be necessary to enable the DLL to run CUDA as a service. The service layer may not have access to the GPU, and so you would have to build some infrastructure to allow the GPU to be accessed. There is some discussion of how to do this on the web.
I’m not an expert and haven’t done this before, so I’m just offering up some ideas of things to explore.
thanks for your replies and suggestions Bob.
Your guess was good, this MSB8011 was not dependant on Dll dependencies (it is not necessary that cuda dll are present in the same folder as the component). I finally succeeded to generate and register my component, but frankly i don’t understand why i’ve got this error. After have got the certainty that it was not a question of Dlls dependencies, to build and register the component i started from a project that already works, and change step by step the project name, file names, classes, CLSID,… all that was necessary.
Now i will be able to test.