python如何传递给c++一个结构体指针?前提是swig封

2025-04-14 22:42:57
推荐回答(1个)
回答1:

在封装的代码间传递指针你要确保他们运行在相同的地址空间里,还要保证指针指向的内存的生存期是安全的,否则这种思路就是错误的。实现方法举例如下:
1、定义了C 结构体和函数如下
typedef struct NameAge
{
char name[20];
int age;
}NameAge , *NameAgePointer;

void test(NameAgePointer p) // 接收结构体指针
{
// do something with p...
}

2、python定义结构体如下
#python中结构体定义
class PyStruct():
def __init__(self, name, age):
self.name = name
self.age = age
fred = PyStruct("fred", 5)
3、假设把第1步里的test封装成example模块,python导入example(既然你都会swig了,这个过程就不啰嗦了)
>>>import example
>>>example.test(pointer(fred))
以上是基本思路,因为搭建开发环境和过程比较繁杂,没有验证过,但是应该没有大问题