定义结构时python cffi解析错误

时间:2015-10-21 17:42:47

标签: python python-cffi

我正在尝试使用python-cffi来包装C代码。以下example_build.py显示尝试换lstat()次呼叫:

import cffi

ffi = cffi.FFI()
ffi.set_source("_cstat",
        """
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <unistd.h>
        """,
        libraries=[])

ffi.cdef("""
        struct stat {
            mode_t  st_mode;
            off_t   st_size;
            ...;
        };
        int lstat(const char *path, struct stat *buf);
""")


if __name__ == '__main__':
    ffi.compile()

编译python example_build.py时会抱怨mode_t st_mode的解析错误。

cffi.api.CDefError: cannot parse "mode_t  st_mode;"
:4:13: before: mode_t

manual提供的类似示例没有任何问题。我错过了什么? TIA。

1 个答案:

答案 0 :(得分:5)

您需要通知CFFI mode_toff_t是一些整数类型。最简单的方法是首先在cdef()中添加这些行:

typedef int... mode_t;   /* means "mode_t is some integer type" */
typedef int... off_t;