前言
场景:某些功能已有C语言实现,现有Java业务系统需要引入。
这种情况下,如果用Java重写一遍可能更加费时费力,不如将此C语言功能编译为一个系统库,供Java调用。
1 引入JNA
pom文件添加依赖
net.java.dev.jna
jna
4.5.2
2 Windows系统调用dll
设dll文件名为libtest.dll,将其放置于此Java文件同文件夹下或项目resources目录。
调用demo代码
import com.sun.jna.Library;
import com.sun.jna.Native;
public class JavaCallDllDemo {
public interface CLibrary extends Library {
// DLL文件默认路径为项目根目录,若DLL文件存放在项目外,请使用绝对路径
CLibrary INSTANCE = (CLibrary) Native.load("libtest", CLibrary.class);
// 声明将要调用的DLL中的方法(可以是多个方法)
int add(int a, int b);
}
public static void main(String[] args) {
int result = JavaCallDllDemo.CLibrary.INSTANCE.add(200, 300);
System.out.println("result: " + result);
}<