Java从DLL实例化C ++类

时间:2013-07-11 12:40:02

标签: java c++ dll

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

我在网上搜索了一个可能的解决方案,但我发现只有使用JNA或JNI的解决方案才能导入C ++ 函数

2 个答案:

答案 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对象,这就是上述方法所需要的。