Объявите «typedef int (*x)(void *)» в java с помощью GraalVM

Я пытаюсь использовать библиотеку C с GraalMV, и у меня есть следующая структура, которую я не могу объявить:


typedef int (*mon_handler)(void *);

typedef struct
{
  mon_handler mon_cb;

} opts;

Мне нужно знать, с каким типом данных объявлять mon_handler

@CStruct(value = "opts")
interface Opts extends Pointerbase{
  
  @CField("mon_handler")
  ???????? getMonHandler();
}

Заранее спасибо!!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После приведения типа указателя void это упрощается до

typedef int *mon_handler;

Где mon_handler — указатель на int. Это по существу эквивалентно

typedef (int *) mon_handler;

Таким образом, правильное отображение будет IntByReference в JNA. CIntPointer в GraalVM также соответствует этому типу:

A pointer to a 32-bit C primitive value.

Привет Даниил, спасибо за ответ. Знаете ли вы, может ли IntByReference быть эквивалентен CIntPointer из graalvm?

Ikaro 22.03.2022 11:51

Да, CIntPointer — это «указатель на 32-битное примитивное значение C». что именно это и есть.

Daniel Widdis 22.03.2022 15:29

Другие вопросы по теме