Доброго времени суток, столкнулся со следующей проблемой: При вызове функции из dll, написанной на Си, pyton'ом получаю следующую ошибку: argument 1: : wrong type (код ниже)
import ctypes
from ctypes import *
CanApiDll = cdll.vs_can_api
handle = "12345"
U_Handle = handle.encode('utf-8')
DevHandle = c_char_p(U_Handle)
Mode = c_ulong(0)
PrototypeOpen = WINFUNCTYPE(c_int, c_char_p, c_ulong) # c_char_p -> c_wchar_p
VSCanOpenParam = (1, "DevHandle", 0), (1, "Mode", 0)
VSCanOpen = PrototypeOpen(("VSCAN_Open", CanApiDll), VSCanOpenParam)
VSCanOpen(ctypes.byref(DevHandle), Mode)
Сначала думал, что ошибка кроется в вызове c_char_p и решил попробовать функцию, принимающую только c_int:
N = c_int(1)
PrototypeClose = WINFUNCTYPE(c_int, c_int)
VSCanCloseParam = (1, "DevHandle", 0),
VSCanClose = PrototypeClose(("VSCAN_Close" , CanApiDll), VSCanCloseParam)
VSCanClose(N)
Но появляется уже другая ошибка, которая выглядит так: Procedure probably called with too many arguments (4 bytes in excess)
Гугление не очень помогло, поэтому буду очень признателен, если поможете)
Заранее спасибо)