jni.h头文件详解一

1.jni.h头文件路径:

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

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

 

 

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

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

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. #define JNIEXPORT  
  2. #define JNIIMPORT  
  3. #define JNICALL  
  4.   
  5. typedef int              jint;  
  6. #ifdef _LP64 /* 64-bit Solaris */  
  7. typedef long             jlong;  
  8. #else  
  9. typedef long long        jlong;  
  10. #endif  
  11. typedef signed char    jbyte;  
  12. typedef unsigned char    jboolean;  
  13. typedef unsigned short   jchar;  
  14. typedef short       jshort;  
  15. typedef float           jfloat;  
  16. typedef double          jdouble;  
  17. typedef jint             jsize;</span>  

 

 

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

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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 plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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 plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. struct _jfieldID;  
  2. typedef struct _jfieldID *jfieldID;   //字段ID类型的  

 

 

7.方法Id的定义。

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. struct _jmethodID;  
  2. typedef struct _jmethodID *jmethodID; //方法ID类型的定义。  

 

 

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

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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 plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. /* 
  2.  * jboolean constants 
  3.  */  
  4. #define JNI_FALSE 0  
  5. #define JNI_TRUE 1  
  6.   
  7. /* 
  8.  * possible return values for JNI functions. 
  9.  */  
  10.   
  11. #define JNI_OK           0                 /* success */  
  12. #define JNI_ERR          (-1)              /* unknown error */  
  13. #define JNI_EDETACHED    (-2)              /* thread detached from the VM */  
  14. #define JNI_EVERSION     (-3)              /* JNI version error */  
  15. #define JNI_ENOMEM       (-4)              /* not enough memory */  
  16. #define JNI_EEXIST       (-5)              /* VM already created */  
  17. #define JNI_EINVAL       (-6)              /* invalid arguments */  
  18.   
  19. /* 
  20.  * used in ReleaseScalarArrayElements 
  21.  */  
  22.   
  23. #define JNI_COMMIT 1  
  24. #define JNI_ABORT 2  

 

 

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

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  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 plain  copy
 
 在CODE上查看代码片派生到我的代码片
    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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值