将数组从c返回到python c类型
所以我在c中有以下方法将数组从c返回到python c类型,python,c,ctypes,Python,C,Ctypes,所以我在c中有以下方法 rx_data_t readBuffer(HANDLE connection) { rx_data_t buffer[512]; _read_receiver_buffer(connection, &buffer[0]); return buffer; } 结果从_read _receiver _bufferfine返回,我可以在buffer中迭代,没有问题 但是,我在使用ctypes库将结果返回Python时遇到了问题 rx_dat
rx_data_t readBuffer(HANDLE connection)
{
rx_data_t buffer[512];
_read_receiver_buffer(connection, &buffer[0]);
return buffer;
}
结果从_read _receiver _bufferfine返回,我可以在buffer中迭代,没有问题
但是,我在使用ctypes库将结果返回Python时遇到了问题
rx_data_t是指向具有以下布局的结构数组的指针:
{
unsigned long receive_time;
unsigned short low;
unsigned short high;
} rx_data_t;
这甚至不应该编译。数组作为指向第一个元素的指针返回,因此返回的是
rx\u data\u t*
指针,而不是rx\u data\u t
结构。而且缓冲区
数组是在堆栈上分配的,因此返回指向它的指针是没有意义的。您需要为阵列malloc
存储,这反过来意味着您需要在不再需要时释放分配的内存。或者,或者使缓冲区
静态
,在这种情况下,当您从函数返回时,存储会持续存在。但是,该函数将不会是可重入/线程安全的,如果你想在多线程程序中使用它,你必须提供适当的同步…你解决了你的问题吗?对不起,我真的不记得了,我有一段时间没有参与该项目了