通过JNI获取Java ByteBuffer的指针

通过JNI获取Java ByteBuffer的指针,java,c++,android-ndk,java-native-interface,bytebuffer,Java,C++,Android Ndk,Java Native Interface,Bytebuffer,如何获取指向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;"); j

如何获取指向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++使用的内存。

如果你想在 MyPuffue/Cuff>中返回第一个元素的地址,那么你可以这样做:

返回m_缓冲区

…或:

返回和m_缓冲区[0]

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

ByteBuffer必须是直接的,这样才能起作用。

您能澄清一下您的问题吗?如果需要返回两个对象,那么返回一个结构。
m\u buffer
是否已经指向分配的内存?如果是这样的话,你为什么说新的呢?经过一些研究,我重写了,现在更简单了,这正是我需要的。非常感谢。我认为
Byte*data=env->GetDirectBufferAddress(obj)将更具描述性。