从c / c ++定义/实例化一个java对象

我在java中的代码如下所示:

class MyClass { public void MyFunc(ISomeListener listener); } 

我想从c ++程序中调用此方法并将所需参数传递给它。 请注意,该参数是接口的实现。 因此,我需要从c ++ 定义 AND 创建 java对象并将其传递给方法。 我怎样才能做到这一点?

PS如果有帮助,最初的问题是java程序是硬件的接口(如驱动程序)。 我正在尝试从这个java代码创建一个DLL,以便它可以在任何语言中使用。 所以我想我会用C / C ++包装代码,然后用它来制作一个DLL。

我设法通过在java中定义Listener类来解决问题。 侦听器具有带有所需回调签名的本机方法。

 public class MyImpl implements MyInterface { @override public native int callback(int i); } 

使用javac编译了这个。 然后使用javah生成要与JNI一起使用的函数声明。 在C程序中,我使用RegisterNatives定义了函数并加载了Impl类并注册了回调函数。

PS如何使用JNI实际定义类的问题仍然没有答案。

编辑:
使用这种方法有一个缺点。 我将不得不在类范围内注册回调而不是对象范围。