本文介绍了使用 JNI 将 float* 转换为 jfloatArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的 c++ 函数中获得了一个 float*,我需要将它转换为 jfloatArray 以返回我的 Java 代码.

I obtain a float* in my c++ function and i need convert it in jfloatArray to return to my Java code.

如何将 float* 转换为 jfloatArray?

How can i convert float* to jfloatArray?

谢谢

推荐答案

要将float*转换为jfloatArray,可以使用NewFloatArray,

To convert float* to jfloatArray, you can use NewFloatArray,

您可以使用以下代码:

  • 变量数据"只是一个简单的例子,所以你可以使用你的代码.
  • 另外,将 com_your_packagename 修改为您的真实包名.
  • 您必须将包名称的点更改为下划线.(com.your.packagename --> com_your_packagename)
jfloatArray Java_com_your_packagename_farrayFromJNI(JNIEnv *env, jobject thiz) {
    jfloatArray result;
    result = (*env)->NewFloatArray(env, 3);

    float* data;
    data = malloc(sizeof(float) * 3);
    data[0] = 123;  data[1] = 456;  data[2] = 789;

    (*env)->SetFloatArrayRegion(env, result, 0, 3, data);
    free(data);

    return result;
}

extern "C"
{
JNIEXPORT jfloatArray JNICALL Java_com_your_packagename_farrayFromJNI(JNIEnv *env, jobject thiz) {

jfloatArray result;
    result = env->NewFloatArray(3);

    float* data;
    data = malloc(sizeof(float) * 3);
    data[0] = 123;  data[1] = 456;  data[2] = 789;

    env->SetFloatArrayRegion(result, 0, 3, data);
    free(data);
    return result;
};
}

这篇关于使用 JNI 将 float* 转换为 jfloatArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-29 02:24