我想将C++映射传递给Java,不知道如何定义返回参数,以便该方法有效。我没有麻烦的字符串或整型作为返回参数,但我不能让地图工作。
我的Java方法是这样的:将C++ map转换为jobject JNI?
private native Map<String,String> sayHello();
我的C++代码是:
#include <stdio.h>
#include "stdafx.h"
#include "jni.h"
#include "HelloJNI.h"
#include <utility>
#include <map>
#include <string.h>
#include <iostream>
using namespace std;
JNIEXPORT jobject JNICALL Java_HelloJNI_sayHello
(JNIEnv *, jobject)
{
map<string, string> mMap;
mMap["1"] = "Ladi";
mMap["2"] = "Dida";
return mMap;
}
,当然我得到一个错误,告诉我,我必须转换MMAP以某种方式jobject。但我不知道如何做到这一点。
我希望它没有双重职位,我只是发现一些问题处理传输名单。
在此先感谢。
一个独立的问题,但是在你的方法的任何实现中,一个独立的问题是哪个字符编码在'mMap'中使用字符串。使用'.c_str()'的代码假定数据不包含NUL字符。并且使用'NewStringUTF'的代码假定编码(或者至少与预期的数据一样)可以被解释为_modified_ UTF-8。 –