C函数需要传递结构体指针是常事,但是和Python交互就有点麻烦事了,经过研究也可以了。
来看下C测试例子:
#include
typedef struct StructPointerTest* StructPointer;
struct StructPointerTest{
int x;
int y;
};
void test(StructPointer p) {
p->x = 101;
p->y = 201;
}
这里test里面需要传入结构体指针,函数中的实现很简单,就是改变x 和 y 的值这个函数将被python调用。
使用Python调用时,需要模拟申明个结构体(class):
from ctypes import *
class StructPointerTest(Structure):
_fields_ =[('x', c_int),
('y', c_int)]
Usage:
##Structure Pointer Operation
SPTobj = pointer(StructPointerTest(1, 2))
print SPTobj
print SPTobj.contents.x
print SPTobj.contents.y
C函数测试例子改成如下:
StructPointer test() {
StructPointer p = (StructPointer)malloc(sizeof(struct StructPointe