Подтвердить что ты не робот

JNI - собственный метод с параметром ByteBuffer

У меня есть метод:

public native void doSomething(ByteBuffer in, ByteBuffer out);

Сгенерированный заголовком javah C/С++ этого метода:

JNIEXPORT void JNICALL Java__MyClass_doSomething (JNIEnv *, jobject, jobject, jobject, jint, jint);

Как я могу получить массив данных из jobject (то есть экземпляр ByteBuffer)?

4b9b3361

Ответ 1

Предполагая, что вы выделили ByteBuffer, используя ByteBuffer.allocateDirect() Использовать GetDirectByteBufferAddress

jbyte* bbuf_in;  jbyte* bbuf_out;

bbuf_in = (*env)->GetDirectBufferAddress(env, buf1);  
bbuf_out= (*env)->GetDirectBufferAddress(env, buf2);