gpt4 book ai didi

java - 如何将 unsigned char 转换为 jbyteArray

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:56:13 27 4
gpt4 key购买 nike

如何将 unsigned char 缓冲区转换为 jbyteArray?我需要获取一个 C++ 缓冲区并通过 JNI 返回到 Java。

这是我当前的代码。

JNIEXPORT jbyteArray JNICALL Java_com_rmsdk_wrapper_RMServices_getImageBuffer(JNIEnv *env, jobject thiso,
jint w, jint h) {
emh::PNGSurface * surface = services->getImageBuffer(w,h);
jbyteArray * buffer = (jbyteArray*)malloc(sizeof(jbyteArray)*surface->getBufferSize());
unsigned char * imgBuff = surface->getBuffer();

for(int i = 0; i < surface->getBufferSize();i++){
buffer = imgBuff;
buffer++;
imgBuff++;
}
return *buffer;
};

编译时出现如下错误。

Compile++ thumb  : rmsdk <= RMSDK_Wrapper_JNI.cpp
/home/marcos/dev/workspace/rmsdk.native.wraper/jni/RMSDK_Wrapper_JNI.cpp: In function '_jbyteArray* Java_com_rmsdk_wrapper_RMServices_getImageBuffer(JNIEnv*, _jobject*, jint, jint)':
/home/marcos/dev/workspace/rmsdk.native.wraper/jni/RMSDK_Wrapper_JNI.cpp:37: error: cannot convert 'unsigned char*' to '_jbyteArray**' in assignment
make: *** [/home/marcos/dev/workspace/rmsdk.native.wraper/obj/local/armeabi/objs/rmsdk/RMSDK_Wrapper_JNI.o] Error 1

是的。

最佳答案

参见 these JNI array operations ,特别是:

  • 新字节数组
  • 获取数组元素
  • ReleaseArrayElements

如果您事先知道数组的最大大小,则可以避免调用 NewByteArray。

如果您不经常调用它,您可能会发现使用 JNA 更容易。

关于java - 如何将 unsigned char 转换为 jbyteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com