[英]Define/Instantiate a java object from c/c++
我在java中的代码如下所示:
class MyClass
{
public void MyFunc(ISomeListener listener);
}
我想从c ++程序中调用此方法并将所需参数传递给它。 请注意,该参数是接口的实现。 因此,我需要从c ++ 定义 AND create 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实际定义类的问题仍然没有答案。
编辑:
使用这种方法有一个缺点。 我将不得不在类范围内注册回调而不是对象范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.