我是 jni 编程的新手。我想将一个浮点数组从java传递给jni,动态分配足够的内存给jni端的浮点数组,在jfloatArray中存储一些值,然后在java中访问它。我不想返回jfloatArray,只是修改传入的输入float数组。我尝试了以下方法,但它没有修改我的 java 浮点数组。如何做到这一点?
Java Code:
float[] pointList = null;
outputBitmap = callJNIFunc(pointList, inputBitmap);
JNI Code:
Bitmap callJNIFunc(JNIEnv *env, jfloatArray pointListInPixels, jobject inputBitmap) {
pointListInPixels = (env)->NewFloatArray(pointListSize.M * 2);
env->SetFloatArrayRegion(pointListInPixels, 0, pointListSize.M * 2, pointFloats);
}
我从Java 和 C 之间的传递数据中读到,这可以通过传递自定义对象来实现。但是,我不太确定如何从 jni 为包含这样的浮点数组的 java 对象执行此操作
public class CustomObject{
public float[] points;
public float[] getPoints() {
return points;
}
public void setPoints(float[] points) {
this.points = points;
}
}