1

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

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

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

线程“主”java.lang.UnsatisfiedLinkError 中的异常:myPath.JCudaDriver-0.9.2-windows-x86_64.dll.dll:找不到指定的过程

我的理解是,这个指定的过程位于对另一个 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 时的错误

线程“main”中的异常 java.lang.UnsatisfiedLinkError: C:\aaa_eric\code\lib\dlls_x64\advapi32.dll: %1 不是有效的 Win32 应用程序

4

1 回答 1

1

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

我将在此处引用我们迭代解决方案 的论坛链接。

于 2018-08-16T23:27:45.160 回答