找不到指定的过程:对于 jcuda 9.2

The specified procedure could not be found: for jcuda 9.2

我正在尝试为使用 jar.exe 工具提取的 JCudaDriver 加载 dll。

System.loadLibrary("JCudaDriver-0.9.2-windows-x86_64")

那个驱动程序肯定在我的 java.libary.path 中,因为如果我手动删除它,我会得到一个未找到的类型错误。现在我收到以下错误。

Exception in thread "main" java.lang.UnsatisfiedLinkError: myPath.JCudaDriver-0.9.2-windows-x86_64.dll.dll: The specified procedure could not be found

我的理解是,这个指定的程序位于对另一个 dll 的某些缺失依赖项中,或者存在版本冲突。我在命令行上使用 windows 实用函数作为 dumpbin /dependents xx.dll 来查找依赖的 dll。他们如下。

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

我可以毫无错误地加载 nvcuda.dll 但后两个是个问题。

fun main(args: Array<String>) {
   //System.loadLibrary("nvcuda")
   System.loadLibrary("ADVAPI32")
   //System.loadLibrary("KERNEL32")
 }

这是尝试加载时的错误 ADVAPI32.dll

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\aaa_eric\code\lib\dlls_x64\advapi32.dll: %1 is not a valid Win32 application

经过JCuda的支持者Marco13的努力,在上面发表了评论,确定问题是安装了Cuda后更新了图形驱动程序。那改变了一些dll。解决方法是删除并重新安装 Cuda。

我将在此处引用 forum link 我们迭代解决方案的地方。