• ZC_知识点


    1、

    在创建一个JNI动态库的工程时应该将工程的输出目标设置为动态连接库(Windows下为.dll,Unix-like系统下为.so,OS X下为.dylib)

    2、类型对应关系 (Java与C/C++)

      ZC: jni.h 中可以查看定义

    JAVA类型    本地类型         JNI定义的别名
     int        long             jint/jsize
     long       __int64          jlong
     byte       singed char      jbyte
     boolean    unsigned char    jboolean
     char       unsigned short   jchar
     short      short            jshort
     float      float            jfloat
     double     double           jdouble
     Object     _jobject*        jobject

    3、JNI中的函数名 命名规则:

      Java_包名_类名_函数名

    4、

    参数:"JNIEnv* env" 的解释:
      JNIEnv类型实际上代表了Java环境,通过这个JNIEnv* 指针,就可以对Java端的代码进行操作。
        例如,创建Jaa类中的对象,调用Java对象的方法,获取Java对象中的属性等等。
      JNIEnv的指针会被JNI传入到本地方法的实现函数中来对Java端的代码进行操作。

      JNIEnv类中有很多函数可以用:
        NewObject:创建Java类中的对象
        NewString:创建Java类中的String对象
        New<Type>Array:创建类型为Type的数组对象
        Get<Type>Field:获取类型为Type的字段
        Set<Type>Field:设置类型为Type的字段的值
        GetStatic<Type>Field:获取类型为Type的static的字段
        SetStatic<Type>Field:设置类型为Type的static的字段的值
        Call<Type>Method:调用返回类型为Type的方法
        CallStatic<Type>Method:调用返回值类型为Type的static方法
       等许多的函数,具体的可以查看jni.h文件中的函数名称。

    参数:"jobject obj" 的解释:
      如果native方法不是static的话,这个obj就代表这个native方法的类实例
      如果native方法是static的话,这个obj就代表这个native方法的类的class对象实例
        (static方法不需要类实例的,所以就代表这个类的class对象)

    5、反射中 构造函数的 函数名 为 "<init>"

      得到 默认构造函数的method id : 

        jmethodID = (JNIEnv*)->GetMethodID(clazz??, "<init>", "()V");

    6、Java和C/C++中字符串的区别:

      (1)、在Java中,使用的字符串String对象是Unicode(UTF-16)码,即每个字符不论是中文还是英文还是符号,一个字符总是占两个字节

      (2)、Java通过JNI接口可以将Java的字符串转换到C/C++中的宽字符串(wchar_t *),或是传回一个UTF-8的字符串(char*)到C/C++,反过来,C/C++可以通过一个宽字符串,或是一个UTF-8编码的字符串来创建一个Java端的String对象

     

    7、

    8、

    9、

  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/javaskill/p/5416833.html
Copyright © 2020-2023  润新知