我有一个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/