如何解决Android NDK,c ++矢量数据类型
|float CalcDistance(vector<SoundInfo> &FeatA,vector<SoundInfo> &FeatB){
do something here
}
如果我有此c ++源代码,那么如何在Android中使用JNI使用它?
我阅读了一些使用NDK的教程,并获得了一些基本概念,但是我不确定c ++中的类型向量必须将哪种数据结构从Java传递到JNI。
提前致谢。
解决方法
您可以从编写等效于
SoundInfo
类型的Java(如果它是结构或类)开始(除非它是某些整数类型的typedef)。它应该携带足够的数据来构造一个“ 1”。例如,Java对象可以包含SoundInfo
\构造函数的所有参数的等效项,并且可以直接将它们作为字段进行访问以最小化JNI代码。
然后,您可以编写两个帮助器函数-一个将Java对象转换为SoundInfo
,另一个将JavaList<JSoundInfo>
转换为vector<SoundInfo>
。
,您可能想要通过jobjectArray将对象传递给(JNI)/ from(Java)。您可以将SoundInfo填充到SoundInfo []中,然后将其作为jobjectArray直接发送,或者如果您只想使用它提供的Get / Set方法,则可以传递对象本身。
请参阅JNI文档以获取Get / SetObjectField(),GetObjectArrayElement()等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。