JNR调用本地动态链接库

首先准备动态链接库

准备一段C代码

int add(int a, int b)
    return a + b;
}

编译成动态链接库

gcc -shared -o add.so add.c

复制add.so到java项目resource目录

引入jnr依赖

<dependency>
    <groupId>com.github.jnr</groupId>
    <artifactId>jnr-ffi</artifactId>
    <version>2.1.10</version>
</dependency>

测试代码

import jnr.ffi.LibraryLoader;

public class JNRTest {
    public interface NativeLib {
        NativeLib INSTANCE = LibraryLoader.create(NativeLib.class).load("add.so");

        int add(int a, int b);
    }

    public static void main(String[] args) {
        NativeLib instance = NativeLib.INSTANCE;

        System.out.println(instance.add(1, 3));
    }
}

运行结果如下

Last updated