我正在打开一个文件,以使用Java的assetmanager在本机环境中读取。我希望在init上只打开一次该文件,然后多次使用文件中定义的功能。为此,我需要将资产管理器保持全局。我目前在C ++中具有以下功能:
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_torch_torchdemo_TorchDemo_callTorch( JNIEnv* env,
jobject thiz,
jobject assetManager) {
// get native asset manager
if(globalManager == NULL){
jobject globalManager = env->NewGlobalRef(assetManager)
AAssetManager* manager = AAssetManager_fromJava(env, globalManager);
}
但是,这抱怨没有定义globalManager。这是有道理的,因为在初始化时不是。我找不到有关如何解决此问题的参考。大多数全局引用问题都与保持对对象的引用有关。但是,我需要保留对AAssetManager的引用。
最佳答案
但是,这抱怨没有定义globalManager。
当然可以。没有定义。
这是有道理的,因为在初始化时不是。我找不到有关如何解决此问题的参考。
错误,您是否考虑过定义它?
显然,您需要的是在全局范围内的“静态jobject globalManager”声明,而不是您首次尝试使用它后在块中声明的localvariable。