根据项目需要,我们的一个项目需要使用某司发布的so接口,而我们的项目是用Python编写运行在Linux(64位)平台,所以直接采用ctypes。
根据提供的开发手册结构写定义如下:
typedef struct
{
unsigned short m_Read_Priv;
unsigned short m_Write_Priv;
} DATA_LIC;
typedef struct
{
unsigned long m_Size;
DATA_LIC m_Lic;
} DATA_FILE_ATTR;
根据C语言python结构体如下
class DATA_LIC(ctypes.Structure):
_fields_=[
("m_Read_Priv",c_ushort),
("m_Write_Priv",c_ushort)
]
class DATA_FILE_ATTR(ctypes.Structure):
_fields_=[
("m_Size",c_ulong),
("m_Lic",DATA_LIC),
]
以上代码我看了不下10篇,也没觉得有问题,(如果开发手册是正确的话,也会是没问题的),python结构定义并赋值传给C代码
data_lic = DATA_LIC()
data_lic.m_Read_Priv = c_ushort(1)
data_lic.m_Write_Priv = c_ushort(2)