如何在java程序中使用SWIG生成的C ++类

时间:2011-01-10 21:55:25

标签: java c++ swig

我正在成功构建一个C ++共享库,并使用System.loadLibrary()将其加载到我的Java程序中

我在C ++文件中的类称为分类器

如何在java中实例化一个新的“Classifier”对象?我是否必须编译并包含从Swig生成的java文件来执行此类操作?如果我不想这样做,我可以只使用课堂上的方法吗?

1 个答案:

答案 0 :(得分:0)

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

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

The SWIG documentation for Java展示了如何从Java实例化C ++对象:

  

C ++类也包含在Java类中。例如,如果您有此课程,

class List {
public:
  List();
  ~List();
  void insert(char *item);
  ...
  

你可以在Java中使用它:

List l = new List();
l.insert("Ale");
...

其他一些想法:

  • 您可以要求SWIG将Java类放在您选择的包中,并在SWIG命令行中使用-package选项。
  • 我个人将生成的代码保存在单独的源代码树中。您将定期删除它,并且不希望意外删除未生成的代码。
  • 如果您不需要访问Java代码中的任何C ++类,您可能会发现JNA比SWIG更容易使用。