jni方法动态寄存器失败

时间:2017-05-29 03:39:48

标签: android java-native-interface

我试图像这样动态注册我的方法:

int ReadFromAsset(JNIEnv *env,jclass thiz,jobject assetM,jstring, filename)

我在gMethods[]中对JNI中方法的描述如下:

{"ReadFromAsset_Native", "(Landroid/content/res/AssetManager;Ljava/lang/String)I",(int*)ReadFromAsset}

我在JAVA中的描述如下:

 public native void ReadAsset_Native(AssetManager assetM, String filename);

以下是注册过程的完整代码:

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
    JNIEnv* env = NULL; 
    jint result = JNI_FALSE;  /*reusult=0*/
    if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
        return result;          
    }                               
    if (env == NULL) {  
        return result;              
    }                                   

    if (env->RegisterNatives(clazz, gMethods, sizeof(gMethods) / sizeof(gMethods[0])) < 0) {
        return result;    /*failed  result=0*/ 
    }                                       
    result = JNI_VERSION_1_4;   
    return result; 
}

此代码位于.cpp文件中。并且ReadFromAsset作为成员方法添加到。我在这里做错了吗?方法签名可能吗?

0 个答案:

没有答案