• jni和java对应关系



    Java 类型本地类型描述
    booleanjbooleanC/C++8位整型
    bytejbyteC/C++带符号的8位整型
    charjcharC/C++无符号的16位整型
    shortjshortC/C++带符号的16位整型
    intjintC/C++带符号的32位整型
    longjlongC/C++带符号的64位整型e
    floatjfloatC/C++32位浮点型
    doublejdoubleC/C++64位浮点型
    Objectjobject任何Java对象,或者没有对应java类型的对象
    ClassjclassClass对象
    Stringjstring字符串对象
    Object[]jobjectArray任何对象的数组
    boolean[]jbooleanArray布尔型数组
    byte[]jbyteArray比特型数组
    char[]jcharArray字符型数组
    short[]jshortArray短整型数组
    int[]jintArray整型数组
    long[]jlongArray长整型数组
    float[]jfloatArray浮点型数组
    double[]jdoubleArray双浮点型数组


    函数Java 数组类型本地类型
    GetBooleanArrayElementsjbooleanArrayjboolean
    GetByteArrayElementsjbyteArrayjbyte
    GetCharArrayElementsjcharArrayjchar
    GetShortArrayElementsjshortArrayjshort
    GetIntArrayElementsjintArrayjint
    GetLongArrayElementsjlongArrayjlong
    GetFloatArrayElementsjfloatArrayjfloat
    GetDoubleArrayElementsjdoubleArrayjdouble
    eg: 
    1. jfloatArray jArray = env->NewFloatArray(8);


    函数描述
    GetFieldID得到一个实例的域的ID
    GetStaticFieldID得到一个静态的域的ID
    GetMethodID得到一个实例的方法的ID
    GetStaticMethodID得到一个静态方法的ID


    定义字符串:

    1. jobjectArray arrays = 0;
    2. //定义长度
    3. jsize len = 20;
    4. arrays = (*jniEnv)->NewObjectArray(jniEnv, len, (*jniEnv)->FindClass(
    5. jniEnv, "java/lang/String"), 0);
    6. jstring jstr;
    7. char* sa[] = { "Hello,", "world!", "JNI", "很", "好玩" };
    8. int i = 0;
    9. for (; i < len; i++)
    10. {
    11. jstr = (*env)->NewStringUTF(env, sa[i]);
    12. (*env)->SetObjectArrayElement(env, arrays, i, jstr);//必须放入jstring
    13. }

    获取数组的值:

    1. int k = 0;
    2. for (; k < len; k++) {
    3. jstring string = (jstring)((*jniEnv)->GetObjectArrayElement(jniEnv,
    4. arrays, k));
    5. if (string != NULL) {
    6. char * c = (*jniEnv)->GetStringUTFChars(jniEnv, string, 0);
    7. __android_log_print(ANDROID_LOG_INFO, "JNIMsg", c);
    8. }
    9. }
    中间层数据类型转化:
    1. char* ---> jstring (*jniEnv)->NewStringUTF(jniEnv,char*)
    2. jstring ---> char (*jniEnv)->GetStringUTFChars(jniEnv, jstring, 0);
    3. long ---> char* ltoa(long,char*,10); sprintf(csendBodyLen,"%ld",sendBodyLen);
    4. char* ---> long *long = atol(char*);







  • 相关阅读:
    springmvc入门&参数&注解
    springmvc_ssm Spring、SpringMVC、MyBatis集成
    spring-dbutils&注解
    如何快速进去 注册表
    数据库的导出 与导入 速度相当快的方法
    常见的问题:https://localhost:1158/em 无法打开
    卸载windows服务
    用语句创建 表空间、临时表空间、用户 等规则
    游标 根据目录号 操作用户 查看 对应得影像数
    根据 目录号 案卷号 用户名 查询 page 中 的条数
  • 原文地址:https://www.cnblogs.com/jqyp/p/815c7a279f025f0a0b63dde56036e9cd.html
Copyright © 2020-2023  润新知