gpt4 book ai didi

java - 是否可以通过方法的返回值将数组从 Java 返回到 C++?

转载 作者:太空狗 更新时间:2023-10-29 21:17:52 26 4
gpt4 key购买 nike

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

我想做的是这样的:

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

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

编辑复制:

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

最佳答案

您可以使用 CallObjectMethod()

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

  • JNIEnv* 环境;
  • 全局或局部引用 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

关于java - 是否可以通过方法的返回值将数组从 Java 返回到 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com