使用 GraalVM 在 java 中声明 "typedef int (*x)(void *)"

Declare "typedef int (*x)(void *)" in java with GraalVM

我正在尝试使用带有 GraalMV 的 C 库,但我有以下结构,但我找不到如何声明:


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();
}

提前致谢!!

在对 void 指针进行类型转换后,这简化为

typedef int *mon_handler;

其中 mon_handler 是指向 int 的指针。它本质上等同于

typedef (int *) mon_handler;

所以在 JNA 中正确的映射是 IntByReferenceCIntPointer在GraalVM中也匹配这个类型:

A pointer to a 32-bit C primitive value.