如何在 JNIWrapper 中将 C++ Array<float,size> 转换为 jfloatArray?

Posted

技术标签:

【中文标题】如何在 JNIWrapper 中将 C++ Array<float,size> 转换为 jfloatArray?【英文标题】:How to convert C++ Array<float,size> to jfloatArray in JNIWrapper? 【发布时间】:2019-10-18 14:21:15 【问题描述】:

我想将我的 C++ array 输出映射到 jniFloatArray

尝试遵循此解决方案:

“Convert float* to jfloatArray using JNI”

但我无法将 float* 指向数组对象。

假设我在 C++ 数组输出对象中的输出是:

输出 = 1.0f ,2.0f ,3.0f;

我真正想要的是在 JniWrapper 中将此 输出(数组) 转换或映射到 jfloatArray

【问题讨论】:

***.com/questions/8541568/… “我无法将 float* 指向数组对象”是什么意思 @Michael 比如说,array output = 0;然后,浮动* ptr = 输出; // 它给出错误 @JoopEggen 实际上,我想将 c++ 的数组 映射到 JNIWrapper 中的 jfloatArray。 如果你想要一个指向std:array中数据的指针,使用output.data() 【参考方案1】:

@Michael 解决了这个问题。因此,通过使用output.data() 并将指向它的浮点指针设置为:

float *ptr = output.data();

解决了这个问题。

【讨论】:

以上是关于如何在 JNIWrapper 中将 C++ Array<float,size> 转换为 jfloatArray?的主要内容,如果未能解决你的问题,请参考以下文章

CMake JNI 错误

如何在 C++ 中将字符串数组转换为整数数组?

在 install4j 安装程序中使用 jniwrapper 自定义代码

如何在Java中将变量的值添加到数组中?

c++中如何将一个字符串转化成数组

如何在 Android Studio Java 中将数组上传到 Firestore 数据