#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.
Комментариев нет:
Отправить комментарий