我试图从我的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函数。