从java传递给jni的参数返回奇怪的值



我试图从我的Java代码在android应用程序中调用JNI函数,调用函数,但JNI函数中的参数值与函数中传递的参数值不同。

下面是我的java声明和调用:
public native void setIA(Integer model);
setIA(1);

这里是JNI函数

extern "C" JNIEXPORT void JNICALL
Java_com_sfy_vitaltechnics_Utils_Parameters_setIA(JNIEnv *env, jobject thiz, jint model) {
LOGD( "This is a number from JNI: %d", model );
}

我得到像-578062932这样的值,但它永远不会是相同的值。

我尝试了几种类型和类型的参数(long, double, float, string和它们的java等价)。

并且每次它返回一个奇怪的值(对于字符串它返回非UTF-8字符)。

我认为问题来自于我声明函数的方式,但我不确定

Integer对应于C中的jobject,因此您应该更改C函数或将java声明更改为setIA(int model);以匹配现有的C函数。

最新更新