如何在 ctypes 中使用 typedef
How to use typedef in ctypes
我正在尝试使用 ctypes 库在 Python 中包装一个 C 库。
我用这种方式包装结构
file.c
typedef struct {
int x;
int y;
} Point;
file.py
import ctypes
class Point(ctypes.Structure):
_fields_ = [("x": ctypes.c_int), ("y", ctypes.c_int)]
但我有这样的语句,无法找到如何包装它并获取类型 MyFucntion
。
typedef char* (*MyFunction)(char*);
检查[Python 3.Docs]: ctypes - A foreign function library for Python。
那是一个函数指针。你可以这样包装它:
FuncPtr = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_char), ctypes.POINTER(ctypes.c_char))
但这在很大程度上取决于您打算如何使用它。
作为旁注,typedef 与 ctypes 没有任何关系:例如 Point 没有 typedef (struct Point { ... };
).
的定义是一样的
我正在尝试使用 ctypes 库在 Python 中包装一个 C 库。
我用这种方式包装结构
file.c
typedef struct {
int x;
int y;
} Point;
file.py
import ctypes
class Point(ctypes.Structure):
_fields_ = [("x": ctypes.c_int), ("y", ctypes.c_int)]
但我有这样的语句,无法找到如何包装它并获取类型 MyFucntion
。
typedef char* (*MyFunction)(char*);
检查[Python 3.Docs]: ctypes - A foreign function library for Python。
那是一个函数指针。你可以这样包装它:
FuncPtr = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_char), ctypes.POINTER(ctypes.c_char))
但这在很大程度上取决于您打算如何使用它。
作为旁注,typedef 与 ctypes 没有任何关系:例如 Point 没有 typedef (struct Point { ... };
).