如何在ctypes中使用typedef

时间:2019-06-21 15:23:49

标签: python c python-3.x ctypes

我正在尝试使用ctypes库将C库包装在Python中。

我用这种方式包装结构

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*);

1 个答案:

答案 0 :(得分:1)

选中[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 的定义与没有< em> typedef (struct Point { ... };)。