安卓将C++无序映射转换成java HASMAP,然后使用JNI将其返回到java
在Android平台上,我有一个非常大的C++ ^ {CD1>},我想用JNI返回java作为一个哈希映射。p>extern "C" JNIEXPORT jobject JNICALL Java_quantum_QUANTUM_getMessage(JNIEnv *env, jobject thisObj, jdoubleArray bbox) {
unordered_map<int, Foo> Map;
Map = getData(filename, bbox);
// convert Map to java object
// return java object
}
我对JNI很陌生。我还没有找到任何关于如何做这件事的有用材料
我在下面的链接中尝试了这种方法,但我在这方面遇到了很多编译错误
how to correctly send a std::map<> from C++ to Java through JNI?
另一个建议是在JNI上传递一个空的javaHashmap并填充它。但我不知道该怎么做。更好的解决方案是什么
# 1 楼答案
这需要一些调整。可以通过在
C++
内创建Map
对象,或者通过将Map
从Java
传递到C++
并在那里填充来实现基本上,你需要的是:
HashMap
int
嵌入Integer
)HashMap
就这样。您可以在这里找到完整的示例代码:
https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo047 https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo048