2011-07-04 47 views
1

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

喜欢的东西:

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

这怎么我实例CLS对象,调用方法,然后从这个方法返回呢?

回答

4

其实,我解决了这个问题:

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; 
};