Я могу получить структуру, заполненную в результате 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 я теперь могу объявить структуру таким образом (спасибо г-ну Мартелли: см. Здесь Python ctypes - сбой при приеме структур dll-функцией ):
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)
показывает, что в нем есть данные!
Как мне вместо этого сделать это? Спасибо!