首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java jnr推断clib结构

如何使用java jnr推断clib结构
EN

Stack Overflow用户
提问于 2014-01-19 15:41:02
回答 1查看 383关注 0票数 1

有没有办法让jnr为我构造一个struct,以便使用jnr访问返回的调用。

例如,如果我想使用

代码语言:javascript
复制
int statvfs(const char *path, struct statvfs *buf);

其中struct statvfs为:

代码语言:javascript
复制
struct statvfs {
    unsigned long  f_bsize;    /* file system block size */
    unsigned long  f_frsize;   /* fragment size */
    fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */
    fsblkcnt_t     f_bfree;    /* # free blocks */
    fsblkcnt_t     f_bavail;   /* # free blocks for unprivileged users */
    fsfilcnt_t     f_files;    /* # inodes */
    fsfilcnt_t     f_ffree;    /* # free inodes */
    fsfilcnt_t     f_favail;   /* # free inodes for unprivileged users */
    unsigned long  f_fsid;     /* file system ID */
    unsigned long  f_flag;     /* mount flags */
    unsigned long  f_namemax;  /* maximum filename length */
};

我如何才能访问它?

EN

回答 1

Stack Overflow用户

发布于 2016-05-27 00:19:35

要使用C++结构,您应该定义扩展jnr.ffi.Struct的类。每个字段都应该有一个java类型,在jnr.ffi.Struct类中定义或从其中一个扩展而来。

例如,*.h文件中的short字段应该在结构类中定义为jnr.ffi.Struct.Signed16

如果你需要一个数组字段,你必须使用静态方法初始化它,如下所示:

代码语言:javascript
复制
public final Signed8[] byteArray = array(new Signed8[8])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21214328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档