1

ビルドしようとすると、Eclipse で次のエラーが表示されます。

jni/cyberlevel9.c:17:31: error: request for member 'NewDirectByteBuffer' in something  not a structure or union
jni/cyberlevel9.c:18:28: error: request for member 'NewGlobalRef' in something not a structure or union

これはコードの問題部分です。

JNIEXPORT jobject JNICALL Java_com_cyberbg_natcamlevel9_NativeCameraLevel9Start_allocNativeBuffer(JNIEnv* env, jobject this, jlong size)
{
void* buffer = malloc(size);
jobject directBuffer = env->NewDirectByteBuffer(buffer, size);
jobject globalRef = env->NewGlobalRef(directBuffer);

return globalRef;
//return (NewDirectByteBuffer*)(*env)->NewDirectByteBuffer(buffer, size);
}
4

1 に答える 1

7

CプログラムからのJNI呼び出しは次のようになります

(*env)->fun(env, p1, ...)

あなたの呼び出しスタイルは、特別なラッパー クラスが で定義されている C++ から OK ですjni.h

env->fun(p1, ...)

jni/cybrrlevel9.c名前を変更するだけで問題を解決できる可能性がありますjni/cyberlevel9.cpp

または、

jobject directBuffer = (*env)->NewDirectByteBuffer(env, buffer, size); 
jobject globalRef = (*env)->NewGlobalRef(env, directBuffer);
于 2013-07-04T19:45:24.747 に答える