zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/xiaorenwu702/p/5801909.html
Copyright © 2011-2022 走看看