zoukankan      html  css  js  c++  java
  • Android JNI 几个常用方法

    1. System.load 参数为库文件的绝对路径,可以是任意路径。
    System.load("/system/lib/libforlinx_runtime.so");
    2. System.loadLibrary ("TestJNI");
    这里,TestJNI.dll 必须是在java.library.path这一jvm变量所指向的路径中。
    可以通过如下方法来获得该变量的值:
    System.getProperty("java.library.path");
    3. JNI_OnUnload & JNI_OnLoad
    JNI_OnUnload()函数与JNI_OnLoad()相对应的。
    在载入C组件时会立即呼叫JNI_OnLoad()来进行组件内的初期动作;
    而当VM释放该C组件时,则会呼叫JNI_OnUnload()函数来进行善后清除动作。
    //使用例子: http://www.cnblogs.com/langlang/archive/2012/04/17/2454217.html
    jint JNI_OnLoad(JavaVM* vm, void* reserved)
    {
     .........
    }
    4. RegisterNatives
    jint RegisterNatives(jclass clazz, const JNINativeMethod* methods,jint nMethods)
    typedef struct {
        const char* name;     /*Java中函数的名字*/        
        const char* signature;  /*描述了函数的参数和返回值*/
        void*       fnPtr;   /*函数指针,指向C函数*/
    } JNINativeMethod;

    const char* signature: 前面参数,后面返回值
    例子:
    "()Z" ==> (void *)forlinx_init  ==> jboolean forlinx_init(JNIEnv *env, jclass clazz)
    "()I" ==> (void*)init_native    ==> jint init_native(JNIEnv *env, jobject clazz)
    字符   Java类型     C类型
    V      void         void
    Z      jboolean     boolean
    I      jint         int
    J      jlong        long
    D      jdouble       double
    F      jfloat            float
    B      jbyte            byte
    C      jchar           char
    S      jshort          short

    数组则以"["开始,用两个字符表示
    [I     jintArray       int[]
    [F     jfloatArray     float[]
    [B     jbyteArray     byte[]
    [C    jcharArray      char[]
    [S    jshortArray      short[]
    [D    jdoubleArray    double[]
    [J     jlongArray      long[]
    [Z    jbooleanArray    boolean[]

    转载请注明出处:http://www.cnblogs.com/langlang/
  • 相关阅读:
    206.反转链表
    gprof
    Java【Stream流、方法引用】学习笔记
    Java【函数式接口(Supplier、Comsumer、Predicate、Function)】学习笔记
    Python exec 内置语句
    Python sorted() 函数
    Python oct() 函数
    Python id() 函数
    Python dir() 函数
    软件测试的方法
  • 原文地址:https://www.cnblogs.com/langlang/p/2454490.html
Copyright © 2011-2022 走看看