使用JNI将float *转换为jfloatArray

问题描述

要将float *转换为jfloatArray,可以使用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;
};
}

解决方法

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

如何将float *转换为jfloatArray?

谢谢

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”