gpt4 book ai didi

java - 具有第一个 jint 参数的 Android 静态 jni 方法接收到错误值

转载 作者:搜寻专家 更新时间:2023-11-01 07:48:52 25 4
gpt4 key购买 nike

我以这种方式声明了一个静态本地方法:

public native static void test(int w, int h);

然后我用JNI的方式声明了它:

void testJni(JNIEnv* env, jint w, jint h)

奇怪的是,w 总是收到一个看起来像指针的值,似乎 jclass/jobject 被传递给第一个参数 w

相反,如果第一个参数不是 jint,比如说 jstring,那么一切都会正常进行。

有人可以解释为什么会这样吗?谢谢。

最佳答案

您的 native 声明不正确。静态方法的第二个参数是jclass,对应放置方法的java类。

Java:

public native static void test(int w, int h);

原生:

void testJni(JNIEnv* env, jclass clazz, jint w, jint h)

对于 native 实例方法,第二个参数是 jobject,它对应于 java 的 this

Java:

public native void test(int w, int h);

原生:

void testJni(JNIEnv* env, jobject thiz, jint w, jint h)

关于java - 具有第一个 jint 参数的 Android 静态 jni 方法接收到错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38261348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com