JNA для пользовательской библиотеки - PullRequest
0 голосов
/ 17 декабря 2010

Я новичок в инфраструктуре JNA, но я думаю, что суть в том, что у меня есть какая-то библиотека "someLib", и я создаю интерфейс Java, чтобы соответствовать ей.Тогда я могу «просто» использовать это правильно?

Но проблема в том, что я не уверен в том, что мне нужно макетировать, в частности, есть некоторые классы, для которых мне нужны функции.

Допустим, что в моей C ++ lib есть объект AdvancedString, который внутренне использует некоторые другие классы.

То есть это выглядит так:

class B { ... };

class AdvancedString { 
  private: 
    B b;

  public:
    AdvancedString doSomething () { ... }

};

И мне нужно иметь возможность в коде Java сказать AdvancedString.doSomething () и заставить его работать.Это означает, что мне нужно ... создать интерфейс для класса AdvancedString?

public interface AdvancedStringInterface extends StdCallLibrary {
  public AdvancedStringInterface doSomething ();
}

Это кажется разумным?Или я что-то упустил.Спасибо за любую информацию, которую вы можете дать!

1 Ответ

1 голос
/ 17 декабря 2010

JNA поможет вам получить доступ к функциям и данным на языке C.Один из вариантов - показать ваши функции C ++ в C API.

Если вы хотите получить доступ ко многим классам C ++, SWIG лучше подходитОн может создавать оболочки Java для ваших классов C ++.Это очень мощно, но есть кривая обучения.

...