Java从DLL实例化C++类
Java instantiate C++ class from DLL
我编写了一组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对象,这正是上述方法所需要的。
相关文章:
- 从C++实例化QML
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 约束和显式模板实例化
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 对象实例化调用构造函数的次数太多
- 如何使用非默认构造函数实例化模板化类
- 静态数据成员模板专用化的实例化点在哪里
- 错误的cv::face FacemarkLBF实例化
- C++的解析器在可以区分比较和模板实例化之前会做什么?
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 检查某些类型是否是模板类 std::optional 的实例化
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- 模板化类构造函数的模板实例化
- 在 c++ 中的模板实例化中使用带有构造函数的类作为类型参数
- 受约束的成员函数和显式模板实例化
- 对显式实例化的模板函数的未定义引用
- [temp.variadic]中关于包扩展实例化的措辞