Я использую JNA для использования библиотеки C ++ в моем приложении Java. Я использую интерфейс в Java, чтобы использовать эти функции. Функция использует три аргумента в C ++: беззнаковое int, const char * и long *. JNA реализует Strings (согласно их документам) в 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);