我试图像这样动态注册我的方法:
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
作为成员方法添加到。我在这里做错了吗?方法签名可能吗?