是否可以通过方法的 return 值 return 从 Java 到 C++ 的数组?

Is it possible to return an array from Java to C++ through a return value of a method?

我知道可以通过本机方法将数组从 Java 传递到 C++,但在那种情况下,您必须 运行 Java 代码。

我想做的是这样的:

public float[] testing2(float[] value1, int[] value2);

有没有办法从 C++ 代码中解决 return 类型的 float[]?如果不是,最简单的方法是什么?是否有可能无需 运行 来自 Java 的代码?

编辑复制:

可能的重复项不是重复项,因为我要求使用本机方法之外的另一种方法来访问此 float[] - 但在其他问题中使用本机方法。

你可以使用 CallObjectMethod().

前提条件:假设在 C++ 中你有

  • JNIEnv* env;
  • 一个全局或局部引用 obj,它具有您描述的 Java 方法 public float[] testing2(float[] value1, int[] value2)
  • val1 这是对 Java float[]
  • 的引用
  • val2 这是对 Java int[].
  • 的引用

然后,

jclass clazz = env->GetObjectClass(obj);
jmethodID testing2meth = env->GetMethodID(clazz, "testing2", "([F[I)[F");
jfloatArray ret = (jfloatArray)env->CallObjectMethod(obj, testing2meth, val1, val2);

然后您可以使用GetFloatArrayElements()GetFloatArrayRegion()访问ret