我正在尝试为我正在处理的项目设置mavenized JCUDA,并且遇到了告诉java在哪里找到库文件的问题。
设置和获取maven来构建.jar
和.dll
文件工作正常,我可以在.dll
中看到正确命名的project\target\lib
文件,我正在设置本地库位置到此文件夹。
尝试从JCUDA JCublasSample.java(www.jcuda.org/samples/JCublasSample.java)运行其中一个程序时遇到的错误是:
创建输入数据...用Java执行Sgemm ...执行Sgemm 与JCublas ......
线程中的异常" main" java.lang.UnsatisfiedLinkError:不能 加载本机库。
加载本机库时出错" JCublas-windows-x86_64"与基地 名字" JCublas"操作系统名称:Windows 7架构: amd64架构位大小:64
尝试将库加载为资源时的堆栈跟踪: java.lang.NullPointerException:找不到包含名称的资源 ' /lib/JCublas-windows-x86_64.dll'
at jcuda.LibUtils.loadLibraryResource(LibUtils.java:149)at at jcuda.LibUtils.loadLibrary(LibUtils.java:83)at jcuda.jcublas.JCublas.initialize(JCublas.java:93)at jcuda.jcublas.JCublas。(JCublas.java:81)at JCublasSample.sgemmJCublas(JCublasSample.java:64)at JCublasSample.testSgemm(JCublasSample.java:49)at JCublasSample.main(JCublasSample.java:25)
尝试将库加载为文件时的堆栈跟踪: java.lang.UnsatisfiedLinkError中: C:\ Users \用户kristoffer.bernhem \ GIT中\ SMlocalizer \目标\ lib中\ JCublas - 窗口x86_64.dll: 无法找到依赖库
at java.lang.ClassLoader $ NativeLibrary.load(Native Method)at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)at java.lang.Runtime.loadLibrary0(Runtime.java:870)at java.lang.System.loadLibrary(System.java:1122)at jcuda.LibUtils.loadLibrary(LibUtils.java:94)at jcuda.jcublas.JCublas.initialize(JCublas.java:93)at jcuda.jcublas.JCublas。(JCublas.java:81)at JCublasSample.sgemmJCublas(JCublasSample.java:64)at JCublasSample.testSgemm(JCublasSample.java:49)at JCublasSample.main(JCublasSample.java:25)at jcuda.LibUtils.loadLibrary(LibUtils.java:128)at jcuda.jcublas.JCublas.initialize(JCublas.java:93)at jcuda.jcublas.JCublas。(JCublas.java:81)at JCublasSample.sgemmJCublas(JCublasSample.java:64)at JCublasSample.testSgemm(JCublasSample.java:49)at JCublasSample.main(JCublasSample.java:25)
正如Guenther所解释的,问题在于支持缺少的.dll
个文件。我该如何排除这个错误呢?
这是在Windows 7(64位)中运行,并使用JDK1.8.0_91运行。