Возврат глобального задания в Java - PullRequest
1 голос
/ 31 марта 2011

У меня есть две функции JNI. Первый позволяет программисту передавать произвольный объект Java в C ++:

void Java_org_love_Lua_pushLightUserdata( JNIEnv* env, jobject javaThis, jlong state, jobject value )
{
    jobject* objectRef = lua_newuserdata( (lua_State*)state, sizeof( jobject ) );
    *objectRef = (*env)->NewGlobalRef( env, value );
}

Тогда есть еще один, который извлекает этот объект:

jobject Java_org_love_Lua_toUserdata( JNIEnv* env, jobject javaThis, jlong state, jint index )
{
    jobject obj = *(jobject*)lua_touserdata( (lua_State*)state, (int)index );
    return obj;
}

Однако по какой-то причине эта функция всегда возвращает значение null в Java. Я знаю, что сам рабочий объект хорош, потому что я также использую этот метод для функции обратного вызова. Впрочем, я впервые пытаюсь вернуть объект. Что я делаю не так?

1 Ответ

1 голос
/ 31 марта 2011

Поскольку вы не возвращаете глобальную ссылку, которую вы тщательно создали, а, скорее, возможно, устаревшую локальную ссылку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...