繁体   English   中英

JNA java.lang.UnsatisfiedLinkError和找不到指定的模块

[英]JNA java.lang.UnsatisfiedLinkError and The specified module could not be found

我正在组装一个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)

我不知道为什么这个错误的原因是什么。 我确保将本机库路径设置为具有本机的文件夹。 有没有人有想法? 提前致谢!

A)当您调用Native.loadLibrary() ,您可以提供简写名称(“myDll”),文件名(“myDll.dll”)或共享库的绝对路径(“c:/ users / me /将myDll.dll“)。

B)如果您没有提供库的绝对路径,您可以通过指定jna.library.path或在java.library.path使用它来告诉它在何处加载DLL(还有其他选项描述在NativeLibrary javadoc )。

您应该向JVM显示您的dll位置。 可以使用-Djava.library.path=pathToDll VM参数完成

我有同样的问题,直到我把我的.dll文件放到C:\\ Windows \\ System32,因为它是一个C ++ DLL并且依赖于该文件夹中的Kernel32.dll和MSVCR100.dll。 这似乎有效。

除了使用-Djava.library.path=pathToDllSystem.setProperty("jna.library.path","pathToDll");设置dll的路径外System.setProperty("jna.library.path","pathToDll"); 确保在Windows中安装了特定的Visual C ++ xxxx Redistributable Package(bcs windows本机库应该使用特定的VisualStudio xxxx构建)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM