2
JNIEXPORT jboolean JNICALL Java_directshowcamera_dsInterface_grab_1frame_1stream(JNIEnv *env, jobject obj, jint streamid, jobject barray)
{
jclass bbclass = env->FindClass("java/nio/ByteBuffer");
jmethodID putMethod = env->GetMethodID(bbclass, "put", "(I, B)Ljava/nio/ByteBuffer");
unsigned char *buffer = stream_buffer(streamid);
if(!stream_image_ready(streamid)) return (jboolean)0;
for(int i=0; i < stream_device_size(streamid); i++) {
env->CallByteMethod(barray, putMethod, i, (jbyte)buffer[i]);
}
return (jboolean)1;
}
그래서, 내가 바이트 버퍼를 가지고 있고, 자바에서 나는 적절한 크기를 할당 한 바이트를 넣어, 그것은 ByteBuffer.put (인덱스, 바이트)로하는 것이 가능하다 발견, 그래서를 얻기 위해 노력 방법을 사용하지만 Java에서 할 경우 다음 런타임 예외가 발생합니다.JNI의 ByteBuffer는
java.lang.NoSuchMethodError: put
내가 잘못 한 아이디어가 있습니까? 나는 JNI를 잘 모르고 있으며 웹에서 찾은 예제를 대부분 다시 작업 해왔다.
당신, 선생님! – OzBarry
@OzBarry 질문에 답변하는 것을 잊었거나 아직 답변을 선택하지 않은 이유는 무엇입니까? –
죄송합니다. 나는 시도했지만, 2 분 정도 기다려야한다고 말했고, 나는 다른 어떤 일에 매료되었습니다. 걱정마, 너 돌아 왔어! – OzBarry