Jni - 使用void指针从java调用c ++方法

时间:2018-05-03 22:46:25

标签: java c++ callback java-native-interface void-pointers

有没有办法使用方法的函数指针从java调用本机(c ++)方法?

基本上我想用它来回调。一旦java中的某个事件被触发,我希望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
}

谢谢!

0 个答案:

没有答案