【发布时间】:2014-07-09 09:20:28
【问题描述】:
我在 java 类中有字节数组,我想将该字节数组传递给 JNI C 类,我无法在 JNI C 中访问该数组,请帮助。
【问题讨论】:
标签: android
我在 java 类中有字节数组,我想将该字节数组传递给 JNI C 类,我无法在 JNI C 中访问该数组,请帮助。
【问题讨论】:
标签: android
您需要像这样(在 Java 中)声明接收数组的 JNI 函数:
私有原生 void sendData(byte[] data);
您可以像调用任何其他函数一样调用该函数:
发送数据(缓冲区);
然后在你的 C 代码中实现这样的函数:
JNIEXPORT void JNICALL Java_com_packageXXX_yourClass_sendData(JNIEnv* env, jobject thiz, jbyteArray 数据);
读取数组:
byte * cData = env->GetByteArrayElements(data, &isCopy);
并发布:
env->ReleaseByteArrayElements(data, cData, JNI_ABORT);
上面的代码是C++。要使其适用于 C,您需要将 jni 环境 (env) 作为您正在调用的函数的第一个参数传递,如下所示:
(*env)->GetByteArrayElements(env,...)
【讨论】: