我需要从 jni 获取字节数组到 Java。 例如:我有一个字节数组 byte[] a = {1,2,3,4,5,6}
JNIEXPORT jbyteArray JNICALL Java_com_vn_getArray (JNIEnv *env, jobject obj) {
jbyte[] a = {1,2,3,4,5,6};
return a;
我不知道如何从 jni 返回字节数组。
有人可以帮助我吗?请!
最佳答案
在 Java 中,数组是一个对象。因此,要将字节数组从 C 或 C++ 移交给 Java,您需要实例化一个 jbyteArray,然后返回它。而不是 C 数组。要解决该问题,请参见以下代码:
JNIEXPORT jbyteArray JNICALL Java_Test_returnArray
(JNIEnv *env, jobject This)
{
jbyte a[] = {1,2,3,4,5,6};
jbyteArray ret = env->NewByteArray(6);
env->SetByteArrayRegion (ret, 0, 6, a);
return ret;
}
基于此link
关于android - 在 jni android 中返回字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603285/