虽然一直在阅读一些关于类似主题的问题,但我无法弄清楚我的情况有什么意义......我在我的库标题中定义了一个 C 结构,如下所示:
#define CLT_MAX_SIZE 16
#define MSG_MAX_SIZE 512
typedef struct
{
LOG_LEVEL m_level;
char m_text[MSG_MAX_SIZE];
char m_client[CLT_MAX_SIZE];
} LOG_Msg;
在为这个库编写 Python 包装器时,我在处理这个结构时遇到了麻烦:
class Message(Structure):
""" """
_fields_ = [
("m_level", c_int),
("m_text", c_char_p*MSG_MAX_SIZE),
("m_client", c_char_p*CLT_MAX_SIZE)
]
问题是我无法为此类编写正确的init方法。我想让它尊重以下原型:
def __init__(self, level, client, text):
""" """
self.m_level = c_int(level)
self.m_text = **???**
self.m_client = **???**
我尝试使用 ctypes cast() 和 create_string_buffer() 方法,但还没有设法初始化这两个文本字段。一定在某个地方错过了什么,但不知道 qo 远...
欢迎任何提示;)