通过JNI获取Java ByteBuffer的指针
如何获取指向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
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++使用的内存。
如果你想在返回m_缓冲区代码>
…或:
返回和m_缓冲区[0]
void * data = env->GetDirectBufferAddress(obj);
ByteBuffer必须是直接的,这样才能起作用。您能澄清一下您的问题吗?如果需要返回两个对象,那么返回一个结构。m\u buffer
是否已经指向分配的内存?如果是这样的话,你为什么说新的呢?经过一些研究,我重写了,现在更简单了,这正是我需要的。非常感谢。我认为Byte*data=env->GetDirectBufferAddress(obj)代码>将更具描述性。