繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM