1. 编写java文件

  1. public class HelloJNI {
  2. static {
  3. System.loadLibrary("HelloWorld"); //链接库的名字
  4. }
  5. public native static void setNum(int num); //链接库的方法
  6. public native static int get();//链接库的方法
  7. public static void main(String[] args) {
  8. HelloJNI test = new HelloJNI(); //声明对象的时候,回去执行static里面的方法,加载c程序库
  9. test.setNum(666);
  10. System.out.println(test.get());
  11. }
  12. }

2. 生成.h文件

javac HelloJNI.java 生成.class文件,为了后面执行所用
javah -jni HelloJNI 生成.h文件,是为了链接c程序所用

3. 编写c++程序

  1. //引入上边生成的头文件
  2. #include "HelloJNI.h"
  3. int result=888;
  4. //注:实现头文件中的方法,方法名必须和头文件中的方法名一致
  5. JNIEXPORT void JNICALL Java_HelloJNI_setNum
  6. (JNIEnv * env, jclass jc, jint num){
  7. result+=num;
  8. }
  9. JNIEXPORT jint JNICALL Java_HelloJNI_get
  10. (JNIEnv * env, jclass jc){
  11. return result;
  12. }