как использовать сгенерированный SWIG класс C ++ в Java-программе - PullRequest
0 голосов
/ 11 января 2011

Я успешно создаю разделяемую библиотеку C ++ и загружаю ее в свою программу Java с помощью System.loadLibrary ()

Мой класс в файле C ++ назывался Classifier

Как мне создать новый объект "Classifier" в Java? Нужно ли мне компилировать и включать java-файлы, сгенерированные из Swig, чтобы делать такие вещи? Если я не хочу этого делать, могу ли я просто использовать методы из класса?

1 Ответ

0 голосов
/ 11 января 2011

При правильном использовании SWIG сгенерирует Java-класс-оболочку под названием «Классификатор».

Да, это необходимо скомпилировать, например, включив его в ваш проект IDE и / или вашу сборку.

В документации SWIG для Java показано, как создать экземпляр объекта C ++ из Java:

Классы C ++ также обернуты классами Java. Например, если у вас есть этот класс,

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

вы можете использовать его в Java следующим образом:

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

Несколько других мыслей:

  • Вы можете попросить SWIG поместить класс Java в выбранный вами пакет с параметром -package в командной строке SWIG.
  • Я лично храню сгенерированный код в отдельном дереве исходников. Вы будете периодически удалять его и не хотите случайно удалять несгенерированный код.
  • Если вам не нужен доступ к каким-либо классам C ++ в вашем коде Java, вам может показаться, что с JNA работать проще, чем с SWIG.
...