Jni - вызов метода c ++ из java с использованием указателей void - PullRequest
0 голосов
/ 04 мая 2018

Есть ли способ вызвать нативный (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
}

Спасибо!

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