本文章介绍的方法为小弟查找资料摸索出来的,为方便以后学习使用,同时提供给刚接触 JNI 的小白一个 demo
文中有错误的概念请大神们不吝教诲~~~
1、编写 java 类,先上代码
package com.demo.jni;
public class HelloJNI {
// 声明 so 库中的方法
public native static String sayHi(String name);
// 载入 so 动态链接库
static {
System.load("/home/admin/main.so");
}
// java 类入口函数
public static void main(String[] args) {
System.out.println(sayHi("It's a result return by main.so file!!"));
}
}
需要注意的有一点,java 类中的包名需要有对应的层级关系
比如上述代码中的包名为 com.demo.jni,终端的默认工作目录为 /home/username/
那么,在 /home/username/ 下需要建立 com 文件夹,com 文件夹下建立 demo文件夹,然后 demo下建立 jni 文件夹,jni 文件夹中存放 HelloJNI.java 类文件
当然,你可以将 /home/username/ 更换为任意你想要使用的工作目录,但是必须保证的是工作目录下能通过java类的完整包名找到该类
代码部分就没什么可以说的了,我们在 so 动态链接库中需要实现的函数为 sayHI(String name),该函数会把我们传入的字符串直接返回给我们,功能就这么简单