jCuda: 0.9.2 Unexpected requirement to include advapi32.dll in library path

windows

#1

I performed a dumpbin /Dependents command line function on one of the key binaries included with 0.9.2 download for windows64. Here are the dlls dependencies revealed.

Dump of file JCudaDriver-0.9.2-windows-x86_64.dll
Image has the following dependencies:
nvcuda.dll
ADVAPI32.dll
KERNEL32.dll

I searched the C-drive to find the second and third dlls in the list, it is in a very strange place and I question if this was intended to be part of the jCuda distribution. For example

C:\Windows\WinSxS\amd64_microsoft-windows-advapi32_31bf3856ad364e35_10.0.15063.0_none_f45c2ae3bf507218

I found a way to understand what dlls are causing the problems. You simply include this line in your java code.
System.loadLibrary(“ADVAPI32”)

Initially, this dll was not found. After moving ADVAPI32.dll into my library path, I get this error
Exception in thread “main” java.lang.UnsatisfiedLinkError: C:\aaa_eric\code\lib\dlls_x64\advapi32.dll: %1 is not a valid Win32 application


#2

It’s not entirely clear what caused you to experiment with this DLL. Did it explicitly say that it tried to load this DLL and did not find it? I think its role is similar to that of the KERNEL32.dll, namely that it contains some basic, built-in functionality of the Operating System, and is included as a dependency when compiling basically any DLL with Visual Studio.

However, I assume that this was just an attempt to solve jCuda: 0.9.2 Specified Procedure Could Not Be Found , so let’s try to figure out a solution there.


#3

You are right, it was an experiment to seek solution to the Specified Procedure Could Not Be Found. I’ll follow your suggestion and work form the other post.