如何在java程序中使用生成的C++类 我成功地构建了一个共享的C++库,并用Sypal.Load库加载到java程序中。 < > C++类中的我的类被称为分类器< /p>

如何在java程序中使用生成的C++类 我成功地构建了一个共享的C++库,并用Sypal.Load库加载到java程序中。 < > C++类中的我的类被称为分类器< /p>,java,c++,swig,Java,C++,Swig,如何在java中实例化一个新的分类器对象?我是否必须编译并包含从Swig生成的java文件才能完成这样的工作?如果我不想这样做,我可以只使用类中的方法吗 如果正确使用,SWIG将生成一个名为Classifier的包装器Java类 是的,这需要编译-例如,通过将其包含在IDE项目和/或构建中 演示如何从java实例化C++对象: C++类也由Java类包装。例如,如果你有这个类 您可以在Java中使用它,如下所示: 其他一些想法: 您可以要求SWIG将Java类放置在您选择的包中,并在SWIG命令

如何在java中实例化一个新的分类器对象?我是否必须编译并包含从Swig生成的java文件才能完成这样的工作?如果我不想这样做,我可以只使用类中的方法吗

如果正确使用,SWIG将生成一个名为Classifier的包装器Java类

是的,这需要编译-例如,通过将其包含在IDE项目和/或构建中

演示如何从java实例化C++对象:

C++类也由Java类包装。例如,如果你有这个类

您可以在Java中使用它,如下所示:

其他一些想法:

您可以要求SWIG将Java类放置在您选择的包中,并在SWIG命令行上使用-package选项。 我个人将生成的代码保存在单独的源代码树中。您将定期删除它,并且不希望意外删除未生成的代码。 如果不需要访问java代码中的C++类,那么您可能会发现JNA比SWIG更容易使用。
我将在这里介绍我不知道JNA是什么——但是,当你只想使用C++定义的函数,但它们不在类上下文中时,他们所概述的所有步骤都是必要的吗?我似乎已经能够加载库,只需通过在java类中将函数声明为本机函数来使用函数,并且从未编译过任何额外的javaJava本机函数。java本机函数是用java声明的,并用C实现的,可能有一些JNI。SWIG使用本机函数在其Java包装器和本机胶水代码之间进行通信。使用SWIG不应要求您手工编写任何Java本机方法。如果您是手工编写自己的Java本机方法,那么应该需要在本机端实现它们。
class List {
public:
  List();
  ~List();
  void insert(char *item);
  ...
List l = new List();
l.insert("Ale");
...