Есть ли способ вызвать нативный (c ++) метод из Java, используя указатель на функцию метода?
В основном я хочу использовать это для обратных вызовов. После того, как определенное событие в java get запущено, я хочу, чтобы java вызывал метод c ++. Java не будет знать об этом методе во время компиляции - он создается позже в отдельной библиотеке c ++ - поэтому мне нужно каким-то образом передать метод из c ++ в java во время выполнения.
Моя идея состояла в том, чтобы передать указатель функции как int (например, void(*)(args)
) и заставить java разрешить метод c ++.
Для пояснения - В C ++ у меня есть что-то вроде этого:
void callback(args)
{
...
}
...
// Use jni to call java method "registerSomeJavaCallback()"
//
registerSomeJavaCallback((int)&callback)
Теперь в Java мне нужно что-то вроде этого:
void registerSomeJavaCallback(int fpointer) {
native void m = getNativeMethodFromPointer(fpointer) // <- This
//
// ... Register event that fires m as callback
}
Спасибо!