我正在组装一个jar,它将允许我调用仅对本机可用的命令( jar使用本机而不是实际的程序)。现在我遇到了一个问题,每当我加载DLL的时候。下面是错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'myDLL.dll': The specified module could not be found.
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:194)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:283)
at com.sun.jna.Library$Handler.<init>(Library.java:142)
at com.sun.jna.Native.loadLibrary(Native.java:368)
at com.sun.jna.Native.loadLibrary(Native.java:353)
at src.NativeBridgeJar.<clinit>(NativeBridgeJar.java:6)
at src.Main.main(Main.java:6)我不知道这个错误的原因是什么。我确保将本机库路径设置为包含本机的文件夹。有谁有主意吗?在进阶时谢谢!
发布于 2013-04-24 20:50:18
A)调用Native.loadLibrary()时,可以提供共享库的缩写名称("myDll")、文件名("myDll.dll")或绝对路径("c:/users/me/myDll.dll")。
B)如果您没有提供库的绝对路径,您可以通过指定jna.library.path或使其在java.library.path上可用(NativeLibrary javadoc中描述了其他选项)来告诉它加载DLL的位置。
发布于 2013-04-24 14:53:49
您应该向JVM显示您的dll位置。可以使用-Djava.library.path=pathToDll VM参数完成此操作
发布于 2013-05-23 18:59:37
我也有同样的问题,直到我把我的.dll文件放到C:\Windows\System32中,因为它是一个C++动态链接库,并且依赖于该文件夹中的Kernel32.dll和MSVCR100.dll。这似乎很管用。
https://stackoverflow.com/questions/16185200
复制相似问题