返回字节数组在jni android吗? [英] return byte array in jni android?
本文介绍了返回字节数组在jni android吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要从jni到Java获取字节数组. 例如:我有一个字节数组byte [] a = {1,2,3,4,5,6}
I need get byte array from jni to Java. Ex: I have a byte array 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返回字节数组.
I do not know how to return a byte array from jni.
有人可以帮助我吗?拜托!
Can someone help me? Please!
推荐答案
在Java中,数组是一个对象.因此,要将字节数组从C或C ++移交给Java,您将需要实例化jbyteArray,然后将其返回.而不是C数组.要解决此问题,请参见以下代码:
In Java, an array is an object. So to hand a byte array from C or C++ over to java you will need to instantiate a jbyteArray, and return that. Instead of a C array. To solve that, see the following code:
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;
}
基于此链接
这篇关于返回字节数组在jni android吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文