У меня есть две функции 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. Я знаю, что сам рабочий объект хорош, потому что я также использую этот метод для функции обратного вызова. Впрочем, я впервые пытаюсь вернуть объект. Что я делаю не так?