gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:17:56 26 4
gpt4 key购买 nike

我用 java 编写的代码如下所示:

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

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

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

最佳答案

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

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

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

附言如何使用 JNI 实际定义类的问题仍未得到解答。

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

关于java - 从 c/c++ 定义/实例化 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15925000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com