如何将我传入JNI的两个值扔到C,然后C进行更改并更新值。如何获取这两个值(maxPower,index)并在Java中查看?他们总是回归零。
JNIEXPORT jdouble JNICALL Java_com_TV (
JNIEnv* env, jobject obj, jdouble maxPower, jint index)
{
jdouble result = 0;
result = Feature_TV(2, &maxPower, &index );
return result;
}
//这里是它调用的c函数它实际上比这更多但是for // demo它应该返回结果60,maxPower和index应该是-5.0和-2 ..
double Feature_TV(double * maxPwr, int * maxPwrIdx ) {
*maxPwr = -5.0;
*maxPwrIdx = -2;
/// do something
return 60;
}
答案 0 :(得分:3)
无法修改传递给Java_com_TV
的变量,因为C是传值,就像Java一样。当您致电Feature_TV
并传递maxPower
和index
的地址时,地址属于Java_com_TV中的局部变量,并且无法看到外部效果。< / p>
要做你想做的事,你可以
com.TV
接受一个具有maxPower和index作为字段的对象,并修改JNI中的字段,或