1.jni.h头文件路径:

  /usr/lib/jvm/jdk_1.6.0_43/include/jni.h

2.jni.h头文件组成分析图:

3.下面通过上图进行分析讲解jni.h头文件.

  一. jni规范中定义的基本数据类型.

[cpp] view plaincopy
  1. #define JNIEXPORT
  2. #define JNIIMPORT
  3. #define JNICALL
  4. typedef int              jint;
  5. #ifdef _LP64 /* 64-bit Solaris */
  6. typedef long             jlong;
  7. #else
  8. typedef long long        jlong;
  9. #endif
  10. typedef signed char    jbyte;
  11. typedef unsigned char    jboolean;
  12. typedef unsigned short   jchar;
  13. typedef short       jshort;
  14. typedef float           jfloat;
  15. typedef double          jdouble;
  16. typedef jint             jsize;</span>

4.jni标准定义的数组类型。

[cpp] view plaincopy
  1. struct _jobject;
  2. typedef struct _jobject *jobject;
  3. typedef jobject jclass;
  4. typedef jobject jthrowable;
  5. typedef jobject jstring;
  6. typedef jobject jarray;
  7. typedef jarray jbooleanArray;
  8. typedef jarray jbyteArray;
  9. typedef jarray jcharArray;
  10. typedef jarray jshortArray;
  11. typedef jarray jintArray;
  12. typedef jarray jlongArray;
  13. typedef jarray jfloatArray;
  14. typedef jarray jdoubleArray;
  15. typedef jarray jobjectArray;

5.方法签名时用到的公共体类型。

[cpp] view plaincopy
  1. typedef union jvalue {
  2. jboolean z;
  3. jbyte    b;
  4. jchar    c;
  5. jshort   s;
  6. jint     i;
  7. jlong    j;
  8. jfloat   f;
  9. jdouble  d;
  10. jobject  l;
  11. } jvalue;</span>

6.属性Id的定义。

[cpp] view plaincopy
  1. struct _jfieldID;
  2. typedef struct _jfieldID *jfieldID;   //字段ID类型的

7.方法Id的定义。

[cpp] view plaincopy
  1. struct _jmethodID;
  2. typedef struct _jmethodID *jmethodID; //方法ID类型的定义。

8.几种不同类型引用的定义。

[cpp] view plaincopy
  1. Return values from jobjectRefType
  2. typedef enum _jobjectType {
  3. JNIInvalidRefType    = 0,
  4. JNILocalRefType      = 1,
  5. JNIGlobalRefType     = 2,
  6. JNIWeakGlobalRefType = 3
  7. } jobjectRefType;</span>

9.错误类型定义。

[cpp] view plaincopy
  1. /*
  2. * jboolean constants
  3. */
  4. #define JNI_FALSE 0
  5. #define JNI_TRUE 1
  6. /*
  7. * possible return values for JNI functions.
  8. */
  9. #define JNI_OK           0                 /* success */
  10. #define JNI_ERR          (-1)              /* unknown error */
  11. #define JNI_EDETACHED    (-2)              /* thread detached from the VM */
  12. #define JNI_EVERSION     (-3)              /* JNI version error */
  13. #define JNI_ENOMEM       (-4)              /* not enough memory */
  14. #define JNI_EEXIST       (-5)              /* VM already created */
  15. #define JNI_EINVAL       (-6)              /* invalid arguments */
  16. /*
  17. * used in ReleaseScalarArrayElements
  18. */
  19. #define JNI_COMMIT 1
  20. #define JNI_ABORT 2

10 .JNI Native Method Interface.(java本地方法接口定义)

[cpp] view plaincopy
  1. struct JNINativeInterface_;
  2. struct JNIEnv_;
  3. #ifdef __cplusplus   
  4. typedef JNIEnv_ JNIEnv;
  5. #else
  6. typedef const struct JNINativeInterface_ *JNIEnv;       //我们使用的是这个定义.
  7. #endif

11. JNI Invocation Interface. (java虚拟机接口)

[cpp] view plaincopy
  1. struct JNIInvokeInterface_;
  2. struct JavaVM_;
  3. #ifdef __cplusplus
  4. typedef JavaVM_ JavaVM;
  5. #else
  6. typedef const struct JNIInvokeInterface_ *JavaVM;
  7. #endif

转载于:https://www.cnblogs.com/xiaorenwu702/p/5801909.html

jni.h头文件详解一相关推荐

  1. c语言windows.h头文件详解

    如果c语言库里没有某个头文件 只需要将下好的头文件放入下面的路径即可 windows.h头文件包含的函数及其用法 1.GetAsyncKeyState()()//通过函数来判断按键按下的状态 主要用法 ...

  2. graphic头文件函数_graphics.h头文件详解

    r getlinesettings(struct linesettingstype far *lineinfo); 该函数将有关线的信息存放到由lineinfo 指向的结构中, 表中linesetti ...

  3. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  4. strcpy没有声明 c++头文件详解

    strcpy没有声明 c++头文件详解 2010-10-23 12:19 4971人阅读 评论(0) 收藏 举报 c++stringiostreamcmath.h语言 协议分发程序程序在公司机器上编译 ...

  5. linux语言的说明顺序有哪些,(linux常用头文件详解.doc

    (linux常用头文件详解 linux常用头文件详解 POSIX标准定义的头文件??????? 目录项 ???????? 文件控制 ??? 文件名匹配类型 ??? 路径名模式匹配类型 ??????? ...

  6. linux 常用头文件,(常用头文件详解.doc

    (常用头文件详解 linux常用头文件详解 POSIX标准定义的头文件??????? 目录项 ???????? 文件控制 ??? 文件名匹配类型 ??? 路径名模式匹配类型 ??????? 组文件 ? ...

  7. string头文件详解

    string头文件详解 头文件 #include<string> using namespace std; 访问字符串 string str="abcd"; for(i ...

  8. 【C++学习笔记】头文件详解

    个人整理学习用,非教材,有错误欢迎指正 头文件   究竟什么是头文件?   首先说明一个概念,所谓的文件后缀并不是必须的,在Linux下这种特点尤为明显.对于编译器来说,无论是.c文件 .cpp文件, ...

  9. ARM(IMX6U)裸机之I.MX6ULL启动头文件详解(内部BOOT ROM、IVT + Boot data + DCD + led.bin)

    参考:Linux之ARM(IMX6U)裸机之I.MX6ULL镜像烧写以及启动头文件的详解 作者:一只青木呀 发布时间: 2020-08-09 17:10:00 网址:https://blog.csdn ...

  10. C++std命名空间和头文件详解

    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突.当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突. 例如小李和小韩都参 ...

最新文章

  1. SilhoNet:一种用于3D对象位姿估计和抓取规划的RGB方法
  2. linux 批量删除
  3. 栈堆的emplace和push_C++(STL):19---deque之删除和emplace用法
  4. Ext JS 4 Beta 3 今天可以下载了
  5. 3DSlicer6:编译、调试、规范化的开发
  6. 打印出重复的姓名和重复的次数,并按重复次数排序:
  7. webbrowser控件 加载为空白_深入学习SAP UI5框架代码系列之一:UI5 Module的懒加载机制...
  8. TSAP(2) : 时区切换
  9. python清空屏幕代码_python 清屏
  10. 关于土地分类格式互转、土地利用转移矩阵、变化图谱计算详解
  11. c语言之图形编程 pdf,《C语言图形编程》.pdf
  12. win10 游戏等应用打开时闪退解决方案
  13. [1] Instances as Queries
  14. php中大于等于的表示方法,php:判断php版本是否大于等于某个版本的方法
  15. 7.3 pgfplots点集
  16. 华为哪款手机是鸿蒙系统_华为鸿蒙系统不会用于手机?
  17. 外卖CPS小程序推广系统外卖侠探探外卖优惠券源码开后台及搭建一条龙
  18. c#语言用XmlReader解析超大XML文件
  19. html中a标签的种类
  20. 音视频直播如何实现低延迟

热门文章

  1. c语言多xml文件操作,c语言 C#中对XML文件的操作.doc
  2. 左移寄存器vhdl_用VHDL实现的通用循环移位寄存器
  3. sha256加密_比特币入门(五):比特币的加密
  4. 19年PDYZ冬令营游记
  5. Oracle实例恢复
  6. 一年工作经验的java面试题
  7. hdu1505 dp:01矩形中最大面积全0矩阵
  8. 在Windows上使用Git和GitHub
  9. discuz6.1.0 弹出无效的图片文件解决办法
  10. 高富帅与大公司 续三 自我认知