java lang类异常-无法转换java vector <用户定义=“ =” java =“” class =“”>从c ++ jni对象回调返回

时间:2019-02-28 15:58:39

标签: android c++ android-ndk java-native-interface

我无法从C ++ jni回调中返回用户自定义的类返回

代码段如下:

// Kotlin类

input

// com.example.MainActivity

data class  class_record(var id:String?,var class_name:String?,var class_type) 

// c ++ jni代码

外部“ C”         JNIEXPORT作业JNICALL         Java_com_example_MainActivity_Cls(JNIEnv * env,jobject实例,jstring id,                                                             ){

public native Object Cls(String id);

Vector vec_ classrecord=new Vector();

vec_classrecord=(Vector)Cls("1234");

1 个答案:

答案 0 :(得分:0)

env->CallVoidMethod(java_vector_object, java_vector_add, cls_object);

在Kotlin环境下,最好在ArrayList中表达jni c ++回调,而不是在返回的arraylist固定大小不可改变的情况下,向量随片段增长几乎两倍的向量。

 java_util_class = env->FindClass("java/util/ArrayList");

        jmethodID java_add= env->GetMethodID(java_util_class, "add","(Ljava/lang/Object;)Z");
        env->CallBooleanMethod(java_object, java_add, cls_object);

sample tutorial