JNI之------JNINativeMethod

简介: JNI之------JNINativeMethod

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[ ][ ][ ])。

对象数组类型:就是上述两者结合,如表第三行。


目录
相关文章
|
存储 Java
JVM-------栈
JVM-------栈
|
10月前
|
安全 Java
《深入理解java虚拟机》学习笔记-----郑雨迪
《深入理解java虚拟机》学习笔记-----郑雨迪
94 0
|
编译器 C++ 异构计算
YL.
|
Android开发
Gradle-----buildSrc
在Android项目中,使用buildSrc抽象命令式逻辑
YL.
844 0
Gradle-----buildSrc
|
Java Unix Linux
JNI学习(0)——关于JNI
JNI学习(0)——关于JNI
158 0
JNI学习(0)——关于JNI
|
运维 监控 C语言
C++学习------cfenv头文件的作用与源码分析
cfenv是C++对C语言头文件fenv.h的封装,该头文件定义了一系列与浮点数运算环境相关的函数和宏定义,以及一些相关的结构体定义。它的作用主要是控制程序运行过程中浮点数运算的状态flag和控制模式,接下来我们来看看这个头文件的具体作用与实现原理。
585 0
|
数据安全/隐私保护
|
算法 数据安全/隐私保护
|
安全 数据安全/隐私保护