gpt4 book ai didi

Python ctypes - 访问 Structure.value 中的数据字符串失败

转载 作者:太空狗 更新时间:2023-10-30 02:35:16 25 4
gpt4 key购买 nike

我能够通过 dll 函数填充一个结构(因为它似乎使用 x=buffer(MyData) 然后 repr(str(buffer (x))).

但是,如果我尝试使用 .value 访问结构的元素,则会出现错误。

我有一个 VarDefs.h 需要这样的结构:

typedef struct
{
char Var1[8+1];
char Var2[11+1];
char Var3[3+1];
...
}TMyData

应该像这样传递给函数:

__declspec(dllexport) int AFunction(TOtherData *OtherData, TMyData *MyData);

在 Python 中,我现在能够以这种方式声明结构(感谢 Martelli 先生:请参阅此处 Python ctypes - dll function accepting structures crashes):

class TMyData( Structure ):

_fields_ = [
("Var1" , type( create_string_buffer(9) ) ),
("Var2" , type( create_string_buffer(12)) ),
...

我这样调用函数:result = Afunction( byref(OtherData) , byref(MyData) )

如前所述,当我尝试访问 MyData.Var1.value 时出现错误(抱歉,现在不能更具体!),但是 repr(str(x) ) 其中x是buffer(MyData)的副本,说明里面有数据!

我应该怎么做呢?谢谢!

最佳答案

您尝试使用 ctypes 进行交互的结构包含几个“字符数组”而不是“指向字符数组的指针”。您需要使用 ctypes.c_char * 9,而不是使用 create_string_buffer(9)

class TMyData( ctypes.Structure ):
_fields_ = [ ("Var1", ctypes.c_char * 9),
("Var2", ctypes.c_char * 12), ... ]

关于Python ctypes - 访问 Structure.value 中的数据字符串失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com