我正在尝试使用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不过,手册给出的类似示例没有任何问题。我遗漏了什么?蒂娅。
发布于 2015-10-21 22:23:39
您需要通知CFFI,mode_t和off_t是一些整数类型。最简单的方法是先在cdef()中添加这些行:
typedef int... mode_t; /* means "mode_t is some integer type" */
typedef int... off_t;https://stackoverflow.com/questions/33265890
复制相似问题