使用JNI将float *转换为jfloatArray

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

如何将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;

};

}

以上是 使用JNI将float *转换为jfloatArray 的全部内容, 来源链接: utcz.com/qa/433302.html

回到顶部