zoukankan      html  css  js  c++  java
  • JNI 回调小记

    javah在eclipse中设置参数:location(javah.exe的位置)working dir(${project_loc}/src)

    -classpath .;./classes -d ${project_loc}jni -jni ${java_type_name}

    回调的java代码

    public class HelloWorld {
        static {
            System.loadLibrary("jnidemo");
        }
    
        public void myCallbackFunc(String nMsg) {
            Log.v("EagleTag", "back message:" + nMsg);
        }
    
        private void throwException() throws NullPointerException {
            throw new NullPointerException("Null pointer");
        }
    
        public native String DisplayHello(String inputStr);
    }

    C代码

    jstring JNICALL Java_com_example_jnidemo_HelloWorld_DisplayHello(JNIEnv *env,
            jobject obj, jstring what) {
        const jbyte *l_what;
        char *result;
    
        l_what = (*env)->GetStringUTFChars(env, what, NULL);
        if (l_what == NULL) {
            return NULL; /* OutOfMemoryError already thrown */
        }
    
        result = malloc(strlen(l_what) + 6);
        if (result == NULL) {
            return NULL;
        }
        sprintf(result, "中文reiver %s", l_what);
    
        //回调
        char tChar[256];
        gJniClass = 0;
        gJinMethod = 0;
    
        gJniClass = (*env)->GetObjectClass(env, obj);
        if (gJniClass == 0 || gJniClass == NULL)
            return (*env)->NewStringUTF(env, "-1");
    
        gJinMethod = (*env)->GetMethodID(env, gJniClass, "myCallbackFunc",
                "(Ljava/lang/String;)V");
        if (gJinMethod == 0 || gJinMethod == NULL)
            return (*env)->NewStringUTF(env, "-2");
    
        strcpy(tChar, result);
        (*env)->CallVoidMethod(env, obj, gJinMethod,
                (*env)->NewStringUTF(env, tChar));
    
        return (*env)->NewStringUTF(env, result);
    }
  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/toosuo/p/3835889.html
Copyright © 2011-2022 走看看