我在c ++函数中获得了一个float *,我需要在jfloatArray中将其转换以返回到我的Java代码。
如何将float *转换为jfloatArray?
谢谢
要将float *转换为jfloatArray,可以使用NewFloatArray,
您可以使用以下代码:
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; }; }