1、JNINativeMethod 结构体的官方定义
typedef struct { const char* name; const char* signature; void* fnPtr; } JNINativeMethod;
第一个变量name是Java中函数的名字。
第二个变量signature,用字符串是描述了Java中函数的参数和返回值
第三个变量fnPtr是函数指针,指向native函数。前面都要接 (void *)
第一个变量与第三个变量是对应的,一个是java层方法名,对应着第三个参数的native方法名字
示例:
static JNINativeMethod methods[] = { { "printJNI", "()I", (void*)printForTest}, };
第二个参数比较复杂:
括号里面表示参数的类型,括号后面表示返回值。
"()" 中的字符表示参数,后面的则代表返回值。
例如"()V" 就表示void Fun();
"(II)V" 表示 void Fun(int a, int b);
2、第二个参数之基本类型
3、第二个参数之对象类型和数组类型
对象类型:以"L"开头,以";"结尾,中间用"/"隔开。如表第一行。
数组类型:以"["开头,如表第二行(n维数组的话,则前面就n个"[",如"[[[D"就表示double[ ][ ][ ])。
对象数组类型:就是上述两者结合,如表第三行。