使用JNI将float*转换为jfloatarray

 2023-01-19    376  

问题描述

我在我的C ++功能中获取float*,我需要在Jfloatarray中将其转换为返回我的Java代码.

如何将float*转换为jfloatarray?

使用JNI将float*转换为jfloatarray

谢谢

推荐答案

要将float*转换为jfloatarray,您可以使用newfloatarray,

您可以使用下面的代码:

  • 变量”数据”只是简单的示例,因此您可以使用代码.
  • 另外,将COM_YOUR_PACKAGANAME修改为您的Packagename.
  • 您必须将包装名称的点更改为Underbar. (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,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25872.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。