我想將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。 –