有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JNI将float*转换为jfloatArray

我在C++函数中得到一个浮点*,我需要用jFrAtAtRable转换它,以返回java代码。p>

如何将float*转换为jfloatArray

谢谢


共 (1) 个答案

  1. # 1 楼答案

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

    您可以使用以下代码:

    • 变量“data”只是一个简单的例子,所以你可以使用你的代码
    • 另外,将com_-your_-packagename修改为真实的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;
    };
    }