3

我编写了一组 C++ 类并创建了一个导出其中一个 C++ 类的 DLL。我需要在 Java 类中实例化导出的 C++ 类。那可能吗?

我在网上搜索了一个可能的解决方案,但我只找到了使用 JNA 或 JNI 仅导入 C++函数的解决方案。

4

2 回答 2

2

是的,您可以从 Java 实例化 C++ 类。

一种方法是使用SWIG,它可以为 C++ 类生成 Java 包装器。

例如,给定一个像这样的 C++ 类:

class MyClass { 
public:
     MyClass();
     int myMethod( int arg );
}

SWIG 允许您像这样编写 Java 代码:

MyClass myclass = new MyClass();
int val = myClass.myMethod( 42 );
于 2013-07-11T14:19:19.473 回答
0

如果你想从 Java 中实例化一个 C++ 类,你必须编写一些胶水代码(在 C++ 中)来实例化所需的对象。此外,您需要一个对应于 C++ 类的 Java 类,并且您需要让胶水代码将 C++ 对象转换为上述 Java 类的对象,并将它们保持在一起(即,对 C++ 对象的更改应该反映到 Java 对象,反之亦然)。

本教程似乎有一些指示如何做到这一点。具体来说,它告诉您如何实例化 Java 对象,这是上述方法所需要的。

于 2013-07-11T12:49:06.853 回答