Так что в основном у меня есть такая структура на стороне C ++:
typedef int(*callback)(int, int);
typedef struct InfoCallback {
int a;
int b;
callback call;
} InfoCallback_t;
И мне бы очень понравилось заполнять эту структуру на стороне Java с помощью JNI (или даже SWIG, но это намного сложнее?). Я знаю, что мне следует использовать interface
на стороне Java в качестве функции обратного вызова, но я не могу обернуть голову вокруг него.
На стороне Java я бы хотел иметь функцию
private native void fillAndPrintStructCallback(int a, int b, Callback callback);
и я предполагаю, что мой интерфейс должен выглядеть примерно как
public interface Callback {
int onCallback(int a, int b);
}
где тело функции JNI должно выглядеть как минимум так:
InfoCallback_t *info = new InfoCallback_t;
info->a = a;
info->b = b;
// can't come up how can I store the reference here to the passed implementation of the Callback
info->call = ???;
delete info;
Я знаю, как передавать примитивы, но не могу придумать, как мне сохранить ссылку на стороне C ++ на обратный вызов Java. Как я мог достичь этого?