通过JNI获取Java ByteBuffer的指针



我怎么能得到一个指针到一个Java字节缓冲区的内部数组?

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++使用的内存

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

ByteBuffer必须是直接的

如果您试图返回m_buffer中第一个元素的地址,那么您可以这样做:

return m_buffer;

。或:

return &m_buffer[0]

最新更新