所以基本上我在C ++端有这样的结构:
typedef int(*callback)(int, int);
typedef struct InfoCallback {
int a;
int b;
callback call;
} InfoCallback_t;
我非常喜欢在Java端用JNI(甚至SWIG来填充此结构,但这要难得多吗?)。我知道我应该在Java端使用interface
作为回调功能,但是我无法将其束之高阁。
在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回调的引用。我该如何实现?