springboot 加载dll动态库失败;求解。
异常提示:
java.lang.UnsatisfiedLinkError: 动态链接库(DLL)初始化例程失败。
代码:
ReadCardJna readCard = Native.load("readcard",ReadCardJna.class);
目前动态库文件放在程序根目录。
springboot 加载dll动态库失败;求解。
异常提示:
java.lang.UnsatisfiedLinkError: 动态链接库(DLL)初始化例程失败。
代码:
ReadCardJna readCard = Native.load("readcard",ReadCardJna.class);
目前动态库文件放在程序根目录。
1.dll文件路径不正确。需要确保dll文件在项目中正确的位置,并且在代码中引用的路径也是正确的。
2.dll文件不是针对当前系统架构编译的。如果当前系统是64位,但是dll文件是32位编译的,那么就会加载失败。需要确保dll文件与当前系统架构匹配。
确保下以上两点。还有可能你放的文件夹路径是除了管理员外不可以访问的
public class LoadDLL {
static {
System.loadLibrary("mydll"); // 加载名为mydll的DLL文件
}
public native void myMethod(); // 定义一个名为myMethod的本地方法,该方法在DLL中实现(解释:这里指dll中有myMethod这个方法,具体你要看你dll里面的)
public static void main(String[] args) {
LoadDLL obj = new LoadDLL();
obj.myMethod(); //这里调用你自己根据dll中的方法来。
}
}
注意: 为了使Java能够加载DLL文件,您需要将DLL文件复制到Java库路径中。在Windows操作系统上,这通常是C:\Windows\System32或C:\Windows\SysWOW64。在Linux或macOS上,可以将DLL文件复制到/usr/lib或/usr/local/lib目录下。