使用 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 中正确的映射是 IntByReference
。 CIntPointer
在GraalVM中也匹配这个类型:
A pointer to a 32-bit C primitive value.
我正在尝试使用带有 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 中正确的映射是 IntByReference
。 CIntPointer
在GraalVM中也匹配这个类型:
A pointer to a 32-bit C primitive value.