У меня есть функция C в файл длл определяется следующим образом:Как передать массив void * на функцию C через ctypes?
myFunction(const int a, long b, void * data, unsigned int * c, unsigned int * d, unsigned long * timestamp)
Параметры:
[in]: a
[in]: b
[out]: data, which is a pointer to a buffer that is maximum of 8 bytes
[out]: c, points to a buffer that receives data message length
[out]: d, pointer to a buffer which receives a message flag
[out]: timestamp, pointer to a buffer which receives message timestamp
Мой питон код выглядит следующим образом:
import ctypes
dllhandle = ctypes.WinDLL("dllFile.dll")
a = 1
b = 1738
data = ctypes.c_void_p*8
c = 0
d = 0
timestamp = 0
dllhandle.myFunction(a, b, data, c, d, timestamp)
Когда я запускаю мой питон код, я получаю следующую ошибку:
ctypes.ArgumentError: argument 3: <type 'exceptions.TypeError'>: Don't know how to convert parameter 3.
Я решил, что это связано с тем, как я создаю свой массив указателей буфера данных. Каков правильный способ создания буфера данных?