У меня есть следующий код C ++ оболочки JNI:
#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);
}
}
и com.map.Map.openMapNative
объявлен как статический, что означает, что я могу работать с одной картой за раз.Как изменить этот код C ++, чтобы map_container* map
стал не статичным и принадлежал точному экземпляру класса com.map.Map
?map_container
полностью класс C ++ и не имеет отражения в Java.