jni.h头文件详解一
1.jni.h头文件路径:
/usr/lib/jvm/jdk_1.6.0_43/include/jni.h
2.jni.h头文件组成分析图:
3.下面通过上图进行分析讲解jni.h头文件.
一. jni规范中定义的基本数据类型.
- #define JNIEXPORT
- #define JNIIMPORT
- #define JNICALL
- typedef int jint;
- #ifdef _LP64 /* 64-bit Solaris */
- typedef long jlong;
- #else
- typedef long long jlong;
- #endif
- typedef signed char jbyte;
- typedef unsigned char jboolean;
- typedef unsigned short jchar;
- typedef short jshort;
- typedef float jfloat;
- typedef double jdouble;
- typedef jint jsize;</span>
4.jni标准定义的数组类型。
- struct _jobject;
- typedef struct _jobject *jobject;
- typedef jobject jclass;
- typedef jobject jthrowable;
- typedef jobject jstring;
- typedef jobject jarray;
- typedef jarray jbooleanArray;
- typedef jarray jbyteArray;
- typedef jarray jcharArray;
- typedef jarray jshortArray;
- typedef jarray jintArray;
- typedef jarray jlongArray;
- typedef jarray jfloatArray;
- typedef jarray jdoubleArray;
- typedef jarray jobjectArray;
5.方法签名时用到的公共体类型。
- typedef union jvalue {
- jboolean z;
- jbyte b;
- jchar c;
- jshort s;
- jint i;
- jlong j;
- jfloat f;
- jdouble d;
- jobject l;
- } jvalue;</span>
6.属性Id的定义。
- struct _jfieldID;
- typedef struct _jfieldID *jfieldID; //字段ID类型的
7.方法Id的定义。
- struct _jmethodID;
- typedef struct _jmethodID *jmethodID; //方法ID类型的定义。
8.几种不同类型引用的定义。
- Return values from jobjectRefType
- typedef enum _jobjectType {
- JNIInvalidRefType = 0,
- JNILocalRefType = 1,
- JNIGlobalRefType = 2,
- JNIWeakGlobalRefType = 3
- } jobjectRefType;</span>
9.错误类型定义。
- /*
- * jboolean constants
- */
- #define JNI_FALSE 0
- #define JNI_TRUE 1
- /*
- * possible return values for JNI functions.
- */
- #define JNI_OK 0 /* success */
- #define JNI_ERR (-1) /* unknown error */
- #define JNI_EDETACHED (-2) /* thread detached from the VM */
- #define JNI_EVERSION (-3) /* JNI version error */
- #define JNI_ENOMEM (-4) /* not enough memory */
- #define JNI_EEXIST (-5) /* VM already created */
- #define JNI_EINVAL (-6) /* invalid arguments */
- /*
- * used in ReleaseScalarArrayElements
- */
- #define JNI_COMMIT 1
- #define JNI_ABORT 2
10 .JNI Native Method Interface.(java本地方法接口定义)
- struct JNINativeInterface_;
- struct JNIEnv_;
- #ifdef __cplusplus
- typedef JNIEnv_ JNIEnv;
- #else
- typedef const struct JNINativeInterface_ *JNIEnv; //我们使用的是这个定义.
- #endif
11. JNI Invocation Interface. (java虚拟机接口)
- struct JNIInvokeInterface_;
- struct JavaVM_;
- #ifdef __cplusplus
- typedef JavaVM_ JavaVM;
- #else
- typedef const struct JNIInvokeInterface_ *JavaVM;
- #endif
jni.h头文件详解一的更多相关文章
- jni.h头文件详解二
作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...
- 【转】 jni.h头文件详解(二)
原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...
- Linux 头文件详解
概览: 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,Linux子目录中有10个,sys子目录中有5个. <a.out.h>:a.out头文件,定义了a. ...
- javascript —— HTTP头文件详解
HTTP(超文本传输协议:HyperText Transfer Protocol)是浏览器和服务器通过internet进行相互通信的协议,也是网络上应用最为广泛的一种网络协议.HTTP规范由World ...
- http请求头、响应头文件详解
HTTP Request Header 请求头 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏 ...
- Android JNI开发生成.h头文件问题(转)
在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...
- Android JNI开发生成.h头文件问题
在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...
- PE文件详解(六)
这篇文章转载自小甲鱼的PE文件详解系列原文传送门 之前简单提了一下节表和数据目录表,那么他们有什么区别? 其实这些东西都是人为规定的,一个数据在文件中或者在内存中的位置基本是固定的,通过数据目录表进行 ...
- stdarg.h头文件源代码分析
谈到C语言中可变参数函数的实现(参见C语言中可变参数函数实现原理),有一个头文件不得不谈,那就是stdarg.h 本文从minix源码中的stdarg.h头文件入手进行分析: #ifndef _STD ...
随机推荐
- 几个MVC属性
1 用于显示提示字符串 [Required(ErrorMessage="请输入类型名称")] public string ArticleTypeName { get; set; ...
- mark jquery 链式调用的js原理
我们在使用jquery的时候会用到类似$("#id").css('color','red').show(200); 这样写有点减少代码量,减少了逐步查询DOM的性能损耗: js 原 ...
- powerbulider9.0在数据窗口中实现滚动到新添加行
powerbuilder9.0对数据窗口进行增加行操作,然后实现滚动到指定行时,应先滚动到指定行dw_1.scrolltorow( row),然后设置新添加的行为当前行dw_1.setrow( row ...
- 在 ServiceModel 客户端配置部分中,找不到引用协定“PmWs.PmWebServiceSoap”的默认终结点元素
System.Exception: ConfigManager.LoadConfigurationFromDb ServiceFactory.GetPmWebService 在 ServiceMode ...
- 使用CPA4破解经典密码算法
下面是一段经过经典密码算法加密的密文(加密算法未知): yvvnerujjvnywhbdvkpchfgvjtzwqsuporqfzpoekkjgziicdwwkeejdsruef whwseyej ...
- 专题二、ArrayList序列化技术细节详解
一.绪论 所谓的JAVA序列化与反序列化,序列化就是将JAVA 对象以一种的形式保持,比如存放到硬盘,或是用于传输.反序列化是序列化的一个逆过程. JAVA规定被序列化的对象必须实现java.io.S ...
- Razor与ASPX语法比较
- e.target与事件委托简例
target定义: target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素.文档或窗口. 语法: event.target event.target.nodeName // ...
- 简易ORM(基于注解)
这是从我们现有项目做的一定的改进准备做成IDE插件 类似getter和setter的生成 1.定义实体类 通过注解说明其表名和字段名(SOURCE类型的注解 不需要运行时使用)@TableName(& ...
- Sublime Text 3 LESS、SASS、SCSS高亮插件、提示插件
为sublime text 添加LESS语法高亮 功能:LESS高亮插件 下载 https://packagecontrol.io/packages/LESS 简介:用LESS的同学都知道,s ...