通过在JNI中传递向量来调用Java方法

时间:2017-12-06 03:50:33

标签: java c++ java-native-interface

如何通过在JNI中传递矢量对象来调用Java方法(使用C ++)?我有这样的事情:

爪哇:

#include <iostream>
#include <tuple>
using namespace std;
int main()
{
    int x = 4;
    int y = 6;
    int z = 8;
    cout << x<< y<<z;
    tie(x, y, z) = make_tuple(y, z, x);
    cout << x << y << z;
    getchar();
    return 0;
}

C ++:

public void methodOne(int[] data) {
    ...
}

我已尝试过上述内容  即使将dataVector转换为int数组

,我也会收到SIGABRT错误

1 个答案:

答案 0 :(得分:0)

我必须做这样的事情:

void mNativeMethod(std::vector<int> dataVector)
{
    unsigned long size = dataVector.size();
    jfloat outCArray[size];
    std::copy(dataVector.begin(), dataVector.end(), outCArray);

    jfloatArray outJNIArray = jniEnv->NewFloatArray(size);
    jniEnv->SetFloatArrayRegion(outJNIArray, 0, size, outCArray);
    jniEnv->CallVoidMethod(jObject, jMethodOne, outJNIArray);
}