如何使用jobject数组?(Jni)

12

实际上,我调用了一个C++函数:

JNIEXPORT void JNICALL Java_test_main_JniFunctions_testObject(JNIEnv *env, jobject obj, jobjectArray objArray){....}

我想要做的是获取原始对象的值。考虑到这个对象在Java代码中的声明:

jniFct.testObject(new Object[][]
        {   
            {"testTable"},
            {0, 0.0, "aaa"},
            {1, 1.1, "bbb"},
            {2, 2.2, "ccc"}
        });

比如,从第二列的第三行中获取值。

有人知道如何做吗?

1个回答

12
jobject row = env->GetObjectArrayElement(objArray, 2);
jobject value = env->GetObjectArrayElement((jobjectArray)row, 1);
const char* cvalue = env->GetStringUTFChars((jstring)value, 0);

谢谢,但是它给了我这个错误:IntelliSense: 不能使用“const char *”类型的值来初始化“char *”类型的实体。如果我将“char *”更改为“string”,它会给我那种值“<ü”。所以...... - Jsncrdnl
编译错误会更有趣。我认为你需要使用 const char * cvalue。我会编辑答案... - weekens
2
还有问题!^^ C++代码有没有办法知道数据类型(例如:字符串、整数、双精度等),以便我可以将其放入正确的变量类型中?或者有没有通用类型可以用来存储这些变量? - Jsncrdnl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接