我正在尝试为使用 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 应用程序