• 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、

  • 相关阅读:
    20169220 2016-2017-2 <网络攻防实践> 课程总结
    20169220 <网络攻防实践> 第十四周实验—免杀
    20169220 <网络攻防实践> 第十二周实验—SQL注入
    20169220 <网络攻防实践> 第十一周实验—SQL注入+TCP/IP攻击
    20169220 <网络攻防实践> 第十周实验—Nmap+Wireshark+缓冲区溢出漏洞
    20169220 <网络攻防实践> 第九周实验——Nmap
    20169220 <网络攻防实践> 第八周实验——网络攻防虚拟机环境搭建
    20169220 <网络攻防实践> 第七周学习总结
    20169220 <网络攻防实践> 第六周学习总结
    20169220 <网络攻防实践> 第五周学习总结
  • 原文地址:https://www.cnblogs.com/javaskill/p/5416833.html
Copyright © 2020-2023  润新知