通过jni获取Java Bytebuffer的指针

 2023-01-20    275  

问题描述

我如何获得指向Java Bytebuffer内部阵列的指针?

JNIEXPORT void JNICALL test(JNIEnv *env, jobject thiso) {
    jclass cls = env->FindClass("java/nio/ByteBuffer");
    jmethodID aloc = env->GetStaticMethodID(cls, "allocateDirect", "(I)Ljava/nio/ByteBuffer;");
    jobject obj = env->CallStaticObjectMethod(cls, aloc, 1000);
}

ps:我正在这样做以分享Java和C ++使用的内存.

通过jni获取Java Bytebuffer的指针

推荐答案

void * data = env->GetDirectBufferAddress(obj);

字节案必须是直接工作的字节.

其他推荐答案

如果您要返回m_buffer中的第一个元素的地址,则可以做:

return m_buffer;

..或:

return &m_buffer[0]

以上所述是小编给大家介绍的通过jni获取Java Bytebuffer的指针,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26188.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。