【发布时间】:2013-04-02 05:51:48
【问题描述】:
我在 java 中的代码如下所示:
class MyClass
{
public void MyFunc(ISomeListener listener);
}
我想从一个 c++ 程序调用这个方法并将所需的参数传递给它。请注意,参数是接口的实现。因此我需要 define AND create 从 c++ 中创建 java 对象并将其传递给方法。我怎样才能做到这一点?
附言 如果有帮助,最初的问题是 java 程序是硬件的接口(如驱动程序)。我正在尝试从这个 java 代码创建一个 DLL,以便它可以用于任何语言。所以我想我会使用 C/C++ 包装代码,然后用它制作一个 DLL。
【问题讨论】:
-
在我看来,这种方法存在根本缺陷。除非通过 jni 使用了一些本机库,否则 Java 不能与硬件进行任何类型的低级接口。实现这一点的真正和通常的方法是将本地对应物包装在 java 中,而不是相反。您将 360 度返回起点。我不知道确切的问题,但看起来很奇怪。
-
You can call Java from C++ using JNI。我是否正确理解您想在 C++ 中实现 Java 接口,然后调用 Java 函数并将 C++ 实现传递给它?我想知道这是否可能。特别是考虑到 C++ 甚至没有接口。
-
@Yn5an3,你也许是对的。但是该应用程序已经实现了,重新实现它并不划算。
-
@Philipp,我已经使用了 JNI 并成功地从 C 运行了 java 代码。你理解正确,这就是为什么我在这里问这个问题,看看它是否可能(如何?)。
-
在您的 C++ 代码中直接使用与您的 Java 代码相同的本地库可能会更容易。
标签: java c++ c dll parameter-passing