Как использовать unsigned int, чтобы иметь возможность использовать функцию для JNA (собственный интерфейс Java)?

Я использую JNA, чтобы использовать библиотеку C++ в своем приложении Java. Я использую интерфейс на Java для использования этих функций. В C++ функция использует три аргумента: целое число без знака, константное значение char* и длинное значение*. JNA реализует строки (согласно их документам) в Java для передачи в char*. Точно так же он использует long[] для передачи long*. Однако я запутался в типе, который я должен передать для unsigned int. Передаваемый char* представляет имя файла, и независимо от того, какой тип я использую для первого аргумента, он, похоже, не распознает файл. Кроме того, последний тип long фактически возвращает значение после выполнения функции. Если я использую тип short или int для первого аргумента, это число кажется правильным, однако, если я использую тип long для первого аргумента, оно неверно. Кто-нибудь может помочь?

Например, вот что за фактическим прототипом на C++ следует то, что у меня сейчас есть в качестве прототипа интерфейса на Java:

int JrConnect(unsigned int id, const char* config_file, long* handle);

public int JrConnect(int[] id, String[] config_file, long[] handle);

person user702905    schedule 11.04.2011    source источник


Ответы (1)


Используйте IntByReference JNA.

person Bala R    schedule 11.04.2011
comment
Разве для этого не требуется, чтобы unsigned int был указателем на unsigned int? - person deworde; 02.11.2015