android-ndk – Android JNI方法 – 是第二个参数jclass还是jobject?

前端之家收集整理的这篇文章主要介绍了android-ndk – Android JNI方法 – 是第二个参数jclass还是jobject?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
伙计们,

在我的Android Java代码中,我有一个声明如下:

public class SurfacePanelNative extends SurfaceView implements SurfaceHolder.Callback {
   ...
   private static native void native_render();
}

在我的本机代码中,我将函数声明为:

void native_render(JNIEnv *env,jobject javaSurface) {
   ANativeWindow* window = ANativeWindow_fromSurface(env,javaSurface);
   ...
}

看一下网上的一些例子,似乎该函数应声明为:

void native_render(JNIEnv *env,jclass clazz) {
   ...
}

我想知道哪个宣言是正确的.

我在想第一个是正确的.否则,我没有足够的信息来获取javaSurface.

如果有人能够对此有所了解,我将不胜感激.

预先感谢您的帮助.

问候,
彼得

解决方法

如果方法是静态的,则为jclass,否则为jobject.如果您使用javah,正如JNI设计者所期望的那样,您将始终得到正确的答案.

猜你在找的Android相关文章