2011-01-10 3 views
0

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

Мой класс в файле C++ был вызван Классификатор

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

ответ

0

Использовано правильно, SWIG создаст оболочный Java-класс под названием «Классификатор».

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

The SWIG documentation for Java показывает, как создать экземпляр объекта C++ из Java:

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

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

вы можете использовать его в Java, как это:

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

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

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

Я предисловие к этому, я не знаю, что такое JNA, - но все ли они были изложены, когда вы просто хотите использовать функции C++ (определенные пользователем), но они не в контексте класса? Мне, похоже, удалось загрузить библиотеку и просто использовать функции, объявив их родными в моем классе java и никогда не приходилось компилировать какие-либо дополнительные java – Derek

+0

Java-функции Java, объявленные на Java и реализованные на C, возможно, с некоторыми JNI , SWIG использует собственные функции для обмена данными между его оболочками Java и собственным кодом клейма. Использование SWIG не требует, чтобы вы вручную записывали любые собственные методы Java. Если вы вручную пишете собственные собственные Java-методы, вам необходимо реализовать их на родной стороне. –