我们用c/c++写好的库,Java是没办法直接调用的,必通过JNI接口调用c/c++库
jni接口需要使用javac
命令生成
javac -h <directory> demoJNI.java
注: 在jdk10以前的老版本使用
javah
命令替代javac -h
jni接口生成的步骤如下:
在java层写好native方法
demoJNI.java
package com.deom;
public class demoJNI {
static {
System.loadLibrary("demojni"); // 加载动态库 libdemojni.so
}
public native int myDemoSum(int a,int b);
}
生成jni接口头文件
javac -h . demoJNI.java
即可生成com_demo_demoJNI.h
文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_demo_demoJNI */
#ifndef _Included_com_demo_demoJNI
#define _Included_com_demo_demoJNI
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_com_demo_demoJNI_myDemoSum
(JNIEnv *, jobject, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
实现功能函数
根据生成的头文件实现功能
com_demo_demoJNI.c
JNIEXPORT jint JNICALL Java_com_demo_demoJNI_myDemoSum
(JNIEnv *env, jobject thiz, jint a, jint b)
{
jint c = 0;
c = a + b;
return c;
}