【发布时间】:2013-02-10 20:59:59
【问题描述】:
我有以下 JNI 包装器 C++ 代码:
#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 中没有反射。
【问题讨论】:
标签: android java-native-interface android-ndk