JNI jni/cyberlevel9.c:17:31:错误:请求成员'NewDirectByteBuffer'不是结构或工会
JNI jni/cyberlevel9.c:17:31: error: request for member 'NewDirectByteBuffer' in something not a structure or union
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);
}
来自C程序的JNI调用看起来像
(*env)->fun(env, p1, ...)
您的调用风格在C++中是可以的,在jni.h
:中定义了一个特殊的包装器类
env->fun(p1, ...)
您可以通过简单地将jni/cybrrlevel9.c
重命名为jni/cyberlevel9.cpp
来解决问题
或者,
jobject directBuffer = (*env)->NewDirectByteBuffer(env, buffer, size);
jobject globalRef = (*env)->NewGlobalRef(env, directBuffer);
相关文章:
- 没有找到相关文章