Hello all! I’m looking for help with an error that is only occurring for us in Packaged Builds. We are writing a plugin and have created a sample app that uses the plugin. We get an exception during load of streamed assets, in the constructor of a helper class we authored that depends on nVidia’s nvTextureTools module. The exception is:
Unhandled exception at 0x00007FFC32A4CD29 (KERNELBASE.dll) in UEMinidump.dmp: 0xC06D007E: Module not found (parameters: 0x000000B13CF77BC0)
The crash dump shows that we are dying in Microsoft’s delayhlp.cpp, where delayLoadHelper2 is attempting to load “nvtt_64.dll” in order to construct an instance of “nvtt::InputOptions”.
We do have nvTextureTools listed as a dependency in our plugin’s core module
The package manifest file “Manifest_NonUFSFiles_Win64.txt” does show as having both
in the package.
nvtt_64.dll files exist in package subdirectory
I’m wondering if there’s a step we’re missing, either to add the .dll to a dictionary of .dlls that can be loaded by the package, or another driver that nvtt_64.dll depends on, or to load it earlier in the startup process.
I got things to work by manually forcing the packaged build to load nvtt_64.dll by adding the following code to our core module’s
FString nvttPath = FPaths::EngineDir() / TEXT("Binaries/ThirdParty/nvTextureTools/Win64/nvtt_64.dll"); void* nvttModule = FPlatformProcess::GetDllHandle(*nvttPath);
Really not sure why this is necessary / what’s breaking with the delay load system, as nvTextureTools does add its dll to the PublicDelayLoadDLLs list. Seems like a messy workaround, so if anyone has a better solution, I’m happy to hear it.