民间,
在我的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。
如果有人能对此有所了解,我将不胜感激。
提前感谢您的帮助。
的问候,
彼得
答案 0 :(得分:10)
如果方法为jclass
,则为static
,否则为jobject
。如果您使用javah
,正如JNI设计师所期望的那样,您将始终得到正确的答案。