Eri*_*ric 9 python dll recursion ctypes structure
我在C中为驱动程序开发了一个DLL.我用C++编写了一个测试程序,DLL运行正常.
现在我想使用Python来处理这个DLL.我已成功隐藏了大多数用户定义的C结构,但有一点我必须使用C结构.我对python很新,所以我可能会弄错.
我的方法是使用ctype在python中重新定义一些结构,然后将变量传递给我的DLL.但是在这些类中,我有一个自定义链表,其中包含递归类型,如下所示
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", EthercatDatagram)]
Run Code Online (Sandbox Code Playgroud)
这失败了,因为在EthercatDatagram中,尚未定义EthercatDatagram,因此解析器返回错误.
我应该如何在python中表示这个链表,以便我的DLL能够正确理解它?
use*_*876 15
你几乎肯定想要将next_command声明为指针.拥有一个包含自身的结构是不可能的(用任何语言).
我想这就是你想要的:
class EthercatDatagram(Structure):
pass
EthercatDatagram._fields_ = [
("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", POINTER(EthercatDatagram))]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1826 次 |
| 最近记录: |