我有一个C API,其函数可在以下C结构上工作:

typedef struct s_t{
    mpq_ptr mpq;
    mpfr_ptr mpfr;
} s_t;


我正在为此C API构建一个python包装器,因此我需要将此结构定义为一个继承自ctypes中“ Structure”类的类,然后为_field_提供值。但是,mpq_ptr,mpfr_ptr是mpfr.h中的类型,并且没有对应的ctypes类型。有办法解决这个问题吗?

我想要在python中获得的东西是这样的:

class S_t(Structure):
    _fields_ = [('mpq', CTYPEFOR(mpq_ptr)),('mpfr', CTYPEFOR(mpfr_ptr))]


这样我就可以在python中创建此类对象并将其传递给以s_t作为输入参数的相应C函数。

最佳答案

我通过跟踪mpfr.h和gmp.h文件中的所有typedef并在python中创建所有必要的结构来解决此问题:

class Mpz(Structure):
     # define struct manually

class Mpq(Structure):
     # define struct manually

class Mpfr(Structure):
     # define struct manually

关于python - 如何在python中使用ctypes创建包含mpfr.h类型的对应结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47311220/

10-12 14:44