Java从DLL实例化C++类

Java instantiate C++ class from DLL

本文关键字:C++ 实例化 DLL Java      更新时间:2023-10-16

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

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

是的,您可以从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 );

如果你想从Java实例化一个C++类,你必须写一个小的粘合代码(用C++)来实例化所需的对象。此外,您将需要一个与C++类相对应的Java类,并且您需要让粘合代码将C++对象转换为前面提到的Java类的对象,并将它们保持在一起(即,对C++对象的更改应该反映到Java对象,反之亦然)。

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