Ich möchte eine C++ Map nach Java übertragen und habe keine Ahnung, wie man den Rückgabeparameter definiert, damit die Methode funktioniert. Ich hatte keine Probleme mit String oder Int als Return-Parameter, aber ich kann nicht funktionieren.
Meine Java-Methode wie folgt aussieht:Convert C++ Map zu Jobject JNI?
private native Map<String,String> sayHello();
Meine C++ Code ist:
#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;
}
Und natürlich ich einen Fehler, mir zu sagen, ich MMAP konvertieren müssen irgendwie jobject. Aber ich habe keine Ahnung, wie ich das machen soll.
Ich hoffe, es ist kein Doppel-Post, ich habe nur einige Fragen über die Übertragung von Listen.
Vielen Dank im Voraus.
Ein unabhängiges Problem, aber eine, die in jeder Implementierung Ihrer Methode wäre, ist, welche Zeichencodierung die Zeichenfolgen in "mMap" verwenden. Code, der '.c_str()' verwendet, setzt voraus, dass die Daten keine NUL-Zeichen enthalten. Und Code, der 'NewStringUTF' verwendet, geht davon aus, dass die Codierung (oder zumindest so weit wie die erwarteten Daten gehen) als _modified_ UTF-8 interpretiert werden kann. –