返回字节数组在jni android吗? [英] return byte array in jni android?

查看:74
本文介绍了返回字节数组在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆