我编写了一组C ++类并创建了一个导出其中一个C ++类的DLL。我需要在Java类中实例化导出的C ++类。那可能吗?
我在网上搜索了一个可能的解决方案,但我发现只有使用JNA或JNI的解决方案才能导入C ++ 函数。
答案 0 :(得分: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 );
答案 1 :(得分:0)
如果要从Java实例化C ++类,则必须编写一些实例化所需对象的粘合代码(在C ++中)。此外,您需要一个与C ++类相对应的Java类,并且需要使用粘合代码将C ++对象转换为上述Java类的对象,并将它们保持在一起(即,应该对C ++对象进行更改)反思到Java对象,反之亦然。)
This tutorial似乎有一些指示如何做到这一点。具体来说,它告诉您如何实例化Java对象,这就是上述方法所需要的。