Как использовать typedef в ctypes - PullRequest
3 голосов
/ 21 июня 2019

Я пытаюсь обернуть библиотеку C в Python, используя библиотеку ctypes.

Я обертываю структуры таким образом

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 Ответ

1 голос
/ 21 июня 2019

Проверка [Python 3.Docs]: ctypes - библиотека сторонних функций для Python .

Это указатель на функцию. Вы можете обернуть это так:

FuncPtr = ctypes.CFUNCTYPE(ctypes.POINTER(ctypes.c_char), ctypes.POINTER(ctypes.c_char))

Но это очень сильно зависит от того, как вы собираетесь его использовать.

В качестве примечания: typedef не имеет ничего общего с ctypes : например, Точка определение будет таким же без typedef (struct Point { ... };).

...