2010-04-20 26 views
16

ByteBuffer parametresi ile yerli yöntemi: javah C OluşturulanJNI'yı - Ben bir yöntem var

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

/Bu yöntemin C++ başlığıdır:

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

Nasıl bir veri dizisi alabilirsiniz jobject'den (bu bir ByteBuffer örneğidir)? bbuf_in = (jbyte *) (:

cevap

25

Eğer ByteBuffer.allocateDirect kullanarak ByteBuffer() Use GetDirectByteBufferAddress

jbyte* bbuf_in; jbyte* bbuf_out; 

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

GetDirectBufferAddress dönüş tipi void *, sen bir jbyte * için döküm gerek tahsis varsayarsak env *) -> GetDirectBufferAddress (env, buf1); // C bbuf_in = (jbyte *) env-> GetDirectBufferAddress (buf1); // C++ –

+1

@ Hata454 Bu, "void *' s –

+0

'u çevirmenize gerek yok. -Weardantic'iniz varsa yayınlamanız gerekir –

İlgili konular