我知道可以通过本机方法将数组从Java传递到C ++,但在这种情况下,您必须运行Java代码。
我想做的是这样的事情:
public float[] testing2(float[] value1, int[] value2);
有没有办法从C ++代码中解决返回类型float[]
?如果不是,最简单的方法是什么,是否可以不用从Java运行代码?
编辑重复:
可能的副本不是重复的,因为我要求使用本机方法的另一种方式来访问此float[]
- 但在其他问题中使用本机方法。
答案 0 :(得分:3)
您可以使用CallObjectMethod()
。
前提条件:在C ++中假设你有
JNIEnv* env;
obj
的全局或本地引用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
。