C++マップをJavaに転送し、メソッドが動作するようにreturnパラメータを定義する方法がわかりません。文字列やintを返すパラメータは問題ありませんでしたが、マップを取得できません。
私のJavaメソッドは次のようになります。C++マップを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;
}
そしてもちろん、私は何とかJOBJECTするMMAPを変換する必要が私に言って、エラーが発生します。しかし、私はどのようにこれを行うには分かりません。
私はそのダブルポストを望んでいない、私はちょうど送信リストを扱ういくつかの質問を見つけた。
ありがとうございます。
独立した問題ですが、あなたのメソッドの実装に含まれるものは、どの文字エンコーディングが 'mMap'で文字列を使用するかです。 '.c_str()'を使ったコードは、データにNUL文字が含まれていないことを前提としています。そして、 'NewStringUTF'を使ったコードは、エンコーディング(または少なくとも予想されるデータが出る限り)が_modified_ UTF-8として解釈可能であることを前提としています。 –