提问人:Clamore 提问时间:12/8/2022 最后编辑:marc_sClamore 更新时间:8/8/2023 访问量:65
从 java 传递给 jni 的参数返回奇怪的值
Argument passed to jni from java are returning weird values
问:
我正在尝试从 android 应用程序中的 Java 代码中调用 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 字符)。
我认为问题出在我声明函数的方式上,但我不确定
答:
2赞
user7860670
12/8/2022
#1
Integer
对应于 C 函数,因此您应该更改 C 函数或更改 java 声明以匹配现有的 C 函数。jobject
setIA(int model);
评论
javap
Integer
int