一、JNI是什么?
JNI是Java Native Interface的缩写,译为Java本地调用。JNI是一种技术。
二、JNI技术的用途?
- Java程序中的函数调用Native程序中的函数。Native一般指使用C/C++编写的函数。
- Native程序中的函数调用Java程序中的函数。
三、注册JNI函数
- 静态注册
Java层函数通过Java编译成.class文件,再通过Javah工具将将.class生成为JNI层的*.h头文件,在*.h头文件里有对应Java层的函数,在JNI层实现相关函数即可。
javah -o test packagename.classname
- 动态注册
Java Native函数与JNI函数是一一对应的关系,所以,有一个数据结构存储着对应关系,这个数据结构就是JNINativeMethod结构体。
typedef struct { const char* name; const char* signature; void* fnPtr; } JNINativeMethod;
JNINativeMethod name:Java函数名称,不包括包路径。
JNINativeMethod signature:Java函数签名,用字符串存储,签名信息由参数类型+返回值类型组成。
JNINativeMethod fnPtr&#