是否可以将数组从Java返回到C++;通过方法的返回值? 我知道可以通过java方法从java到C++的数组,但是在这种情况下,你必须运行Java代码。

是否可以将数组从Java返回到C++;通过方法的返回值? 我知道可以通过java方法从java到C++的数组,但是在这种情况下,你必须运行Java代码。,java,c++,arrays,java-native-interface,return,Java,C++,Arrays,Java Native Interface,Return,我想做的是这样的: public float[] testing2(float[] value1, int[] value2); 有没有一种方法来从C++代码中返回返回类型浮点[] /代码>?如果不是,最简单的方法是什么?不必从Java运行代码也可以吗 编辑以复制: 可能的重复项不是重复项,因为我要求使用本机方法之外的另一种方法来访问此float[]-但在其他问题中使用本机方法。您可以使用CallObjectMethod() 前提:假设C++中有< /P> JNIEnv*env 一个全局或局

我想做的是这样的:

public float[] testing2(float[] value1, int[] value2);
<>有没有一种方法来从C++代码中返回返回类型<代码>浮点[] /代码>?如果不是,最简单的方法是什么?不必从Java运行代码也可以吗

编辑以复制:


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

您可以使用
CallObjectMethod()

前提:假设C++中有< /P>
  • JNIEnv*env
  • 一个全局或局部引用
    obj
    ,它具有您描述的Java方法
    public float[]testing2(float[]value1,int[]value2)
  • val1
    这是对Java
    float[]的引用
  • val2
    这是对Java
    int[]
    的引用
那么


<> P> >您可以使用< C++ > java代码> >或>代码> > GETFLUTATRALY区域()/<代码>访问<代码> ReT< /COD> ./P>。对吗?没错。我想调用一个返回类型为“代码>浮点[]/Cux>的方法,它是在C++环境中用java编写的。如果不可能,那么访问此
浮点[]
的最佳方式是什么?您所说的“本机”方法是什么意思?它的正常解释是“不在JVM”,即所有C++方法都是本机方法。我也不知道如何在不运行Java代码的情况下从Java代码返回数组。很抱歉回答得太晚-但是您能指定一下您所说的
obj
'是什么意思吗?因为我正在跟踪您的解决方案,但在调用
(jfloatArray)env->CallObjectMethod(obj,testing2meth,val1,val2)时遇到一些运行时错误
@yiiit1
obj
指具有方法
testing2()
的Java对象。显示您的代码。您是如何获得obj的?我管理过,不得不使用
CallStaticObjectMethod
-谢谢您的帮助,这正是我正在寻找的解决方案@真的吗?但是在你的问题中,你没有将
testing2()
声明为
static
…这是我一直存在的问题,我使用的其他两种方法也会出现这种情况-不管该方法是否是静态的,我始终必须使用静态版本。。我不知道。。
jclass clazz = env->GetObjectClass(obj);
jmethodID testing2meth = env->GetMethodID(clazz, "testing2", "([F[I)[F");
jfloatArray ret = (jfloatArray)env->CallObjectMethod(obj, testing2meth, val1, val2);