0
0 комментариев

Имеется dll-библиотека с экспортируемыми функциями SetCallback и FreeMemory. Функция SetCallback устанавливает функцию обратного вывода, а функция FreeMemory очищает память, которую выделяет библиотека. Также имеется код:

lib = WinDLL('txmlconnector')
WINCALLBACK = WINFUNCTYPE(c_bool, c_char_p)
def test(data):
    print(data.decode('utf8'))
    #FreeMemory(data)
    return True
callback = WINCALLBACK(test)
SetCallback = lib.SetCallback
SetCallback(callback)

Т.е. я передаю указатель на test в библиотеку dll.
Собственно код работает, функция test вызывается, но переменная data в ней имеет тип bytes, а я ожидаю указатель, т.к. мне нужно освободить выделенную под переменную data память (для этого импользуется функция FreeMemory из библиотеки dll). Как это исправить? Переменная data каким-то образом должна иметь тип c_char_p (либо что-то вроде того).


Добавить комментарий