有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JNI上初始化Java对象

我的问题很简单,我如何在C++上实例化java对象(虽然JNI),并返回这些创建对象的数组?

比如:

jclass cls = g_jniEnv->FindClass("Lbr/com/iba/model/Annotation;");      
jmethodID meth = g_jniEnv->GetMethodID(cls, "setBookmark1", "(Ljava/lang/String;)V");

我如何实例化这个cls对象并调用方法,然后从这个方法返回它


共 (1) 个答案

  1. # 1 楼答案

    事实上,我解决了这个问题:

    JNIEXPORT jobject JNICALL Java_com_rmsdk_wrapper_RMServices_getBookmarkNew(
        JNIEnv *env, jobject thiso) {
       jclass cls = g_jniEnv->FindClass("br/com/iba/model/Annotation");
    
       jobject obj = g_jniEnv->AllocObject(cls);
    
       jmethodID meth1 = g_jniEnv->GetMethodID(cls, "setBookmark1", "(Ljava/lang/String;)V");
       jmethodID meth2 = g_jniEnv->GetMethodID(cls, "setPage", "(I)V");
    
       jstring jAssetName = g_jniEnv->NewStringUTF("Bookmark qualquer");
    
       g_jniEnv->CallObjectMethod(obj, meth1, jAssetName);
       g_jniEnv->CallObjectMethod(obj, meth2, 2);
    
       return obj;
    };