Ich habe folgenden JNI-Wrapper C++ Code:Wie mache ich den Aufruf der JNI-Methode nicht statisch, wenn native C++ - Objekte verwendet werden?
#include "map_container.h"
extern "C" {
JNIEXPORT void JNICALL Java_com_map_Map_openMapNative(JNIEnv* env, jobject thiz, jstring path);
};
static map_container* map = NULL;
void Java_com_map_Map_openMapNative(JNIEnv* env, jobject thiz, jstring path)
{
const char* filename_utf8 = env->GetStringUTFChars(path, false);
if (mapview)
{
delete mapview;
mapview = NULL;
}
mapview = new map_container((char*)filename_utf8);
if (filename_utf8)
{
env->ReleaseStringUTFChars(path, filename_utf8);
}
}
und haben com.map.Map.openMapNative
als statisch erklärt, was bedeutet, dass ich eine Karte zu einer Zeit betrieben werden kann. Wie ändere ich diesen C++ - Code, so dass map_container* map
nicht statisch wird und zu der exakten Instanz com.map.Map
Klasse gehört? map_container
ist vollständig C++ - Klasse und hat keine Reflexion in Java.
Danke für einen tollen Link. Ich bin mir nicht sicher, ob ich SWIG benutzen werde, aber die Dokumentation enthält gute Beispiele und Erklärungen für die korrekte Umsetzung meiner Aufgabe. –