Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Вызов функции из dll написанной на delphi из python

#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.

Комментариев нет:

Отправить комментарий