本文介绍如何使用java调用windows的dll库。
因为一开始总是报错找不到dll库,不知道问题出在哪。如果不知道加载路径,可使用该方法获取当前程序加载库的路径:
System.out.println("当前dll加载路径:"+System.getProperty("java.library.path"));
当前dll加载路径:E:\Project\IDEAWorkspace\Test\libs
小功能:判断当前系统及架构,可用在jar包中,判断加载so还是dll。
//系统 Windows 或者 Linux
String osName = System.getProperties().getProperty("os.name").toLowerCase();
//架构 x86 或者 amd64
String osArch = System.getProperties().getProperty("os.arch").toLowerCase();
System.out.println("This OS is: " + osName + ";" + osArch);
String fileName = null;
if (osArch.indexOf("64") != -1) {//64位
if (osName.indexOf("win") != -1) {
fileName = "test_64.dll";
} else {
fileName = "test_64.so";
}
System.out.println(System.getProperty("user.dir") + File.separator + fileName);
} else if (osArch.indexOf("86") != -1) {//32位
if (osName.indexOf("win") != -1) {
fileName = "test_32.dll";
} else {
fileName = "test_32.so";
}
System.out.println(System.getProperty("user.dir") + File.separator + fileName);
} else {//不支持的
System.out.println("This OS is not support!");
}
特别注意:
1.如果dll中引用了,其他dll,注意加载顺序,两个dll文件都需要添加到工程中,并使用System.loadLibrary()加载。
2.dll库使用Release版本64位的,要与jdk位数一致。