#python #delphi #dll #ctypes
Импортировал ctypes, подключился к dll. Есть например такая функция: function GetStatusCardReader(var StatusCardReader: Word): Integer; stdcall; Пробую делать так: from ctypes import * libc = windll.LoadLibrary('C:\test.dll') func = libc.GetStatusCardReader func.restype = c_short print(func) Получаю на выходе <_FuncPtr object at 0x057ABA08> Как получить значение?
Ответы
Ответ 1
Чтобы получить значение, функцию надо вызвать. import ctypes _dll = ctypes.windll.test # загрузка test.dll из текущего каталога GetStatusCardReader = _dll.GetStatusCardReader GetStatusCardReader.argtype = ctypes.POINTER(ctypes.c_uint16) GetStatusCardReader.restype = ctypes.c_int32 StatusCardReader = ctypes.c_uint16(5) # инициализация параметра некоторым значением Result = GetStatusCardReader(ctypes.byref(StatusCardReader)) # вызов функции print(StatusCardReader.value) print(Result) Поскольку StatusCardReader в прототипе функции объявлена как var, передавать её надо по ссылке, используя ctypes.byref.
Комментариев нет:
Отправить комментарий