带指针结构的SWIG函数

我使用SWIG来包装C共享库。

我有问题在python中使用struct指针调用C函数。

我的文件:

ST_Param.h:

typedef struct { unsigned int* device_Address; .... .... unsigned int lock; }ST_param_ST; unsigned char ST_Param_Initialize(ST_param_ST * ST_param, unsigned int device_Address); 

ST_Param.c

 ......... Rest of file............. unsigned char ST_Param_Initialize(ST_param_ST * ST_param, unsigned int device_Address){ if(ST_param == NULL){ .......... rest of funtion ....................... return 0; } 

在ST_Param_Initialize中我确认指针存在,如果不相信

ST_Param.i

 /* File : ST_Param.i */ %module ST_Param %{ #define SWIG_FILE_WITH_INIT #include "ST_Param.h" %} %include "typemaps.i" %include "ST_Param.h" 

我编译并生成了一个.so文件。 在python中我可以导入一个库,但我不能调用ST_Param_Initialize,因为需要一个ST_Param_ST *参数:

ST_param_ST *错误

我怎样才能做到这一点?

注意:我无法修改.c和.h文件。 只有一个.i文件。

在谷歌搜索但我不明白该怎么做

感谢和问候。

这样做基本上与在C中执行此操作相同:首先创建一个ST_param_ST结构,然后将其传递给初始化函数ST_Param_Initialize() 。 下面是Python中的一个示例,假设您的模块名为ex

 >>> import ex >>> ST_Param = ex.ST_param_ST() >>> ex.ST_Param_Initialize(ST_param, 42)