I recently upgraded my project from SDK 9 to 10. The problem I’m facing now is that the new SDK seems to early-load the NVENCODEAPI64.DLL. My application supports multiple GPU vendors, and only uses NVENC if we detect an Nvidia GPU. The problem is that on non-Nvidia systems there is no DLL and thus the application won’t load. How can I either force it to delay-load the DLL until the functions are actually used or avoid the error ? Any advice would be greatly appreciated.
I found a work-around for this issue, I used a delayload on the linker to stop this DLL from being loaded regardless.
Now here is my next question, SDK 9.x worked perfectly on my GT 650m, now with SDK 10 this GPU is no longer compatible… I thought backwards compatibility was a key object (according the the documentation).
Given the two SDKs have different (same name) libs, I can’t exactly link both SDKs into one solution, I would expect SDK 10 to support all the same gpus that 9 did ??
NVENCODEAPI64.DLL is part of the driver installation, not the SDK.
You need to check the GPU is supported by newer driver you installed.
Hi, yes I’m aware of that. The problem is that version 10 of the SDK early binds this DLL before any function is even called. This means if you run the application on a non Nvidia system it will fail to load. With SDK 9 this was not the behaviour as the DLL was dynamically loaded via LoadLibrary.
I have subsequently forced a delayload on this DLL.
The other thing that is strange is that SDK 9 supported many older GPUs no longer supported by 10, thus forcing me to use BOTH sdks simultaneously to support the largest number of possible devices.