java调用.so文件

参考原文:https://blog.csdn.net/Thousa_Ho/article/details/78653835

环境是Linux

1.编写好java文件

public class ATest {
  private native void hello();
  static{
     System.load("/home/libAtest.so");
  }
  public static void main(String[] args){
     ATest test = new ATest();
     test.hello();
  }
}

2.执行命令生成.h文件

javah -jni -classpath 类所在的目录地址 -d 文件生成的目录地址 类名(不要后缀)

3.编写一个.c文件实现方法

#include<jni.h>
#include<stdio.h>
#include"ATest.h"

/*
 * Class:     ATest
 * Method:    hello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_ATest_hello
  (JNIEnv *, jobject){
   printf("hello");
}

4.最后打包成.so文件

g++ -I"/usr/local/java/jdk1.8.0_121/include/linux" -I"/usr/local/java/jdk1.8.0_121/include" -fpic -shared -o libAtest.so ATest.c 

5.使用之前编写的Java代码,就可以调用刚生成的.so文件

原文地址:https://www.cnblogs.com/zhh2020/p/12669403.html