Найти - Пользователи
Полная версия: Функция из DLL не возвращает значения в Python
Начало » Python для новичков » Функция из DLL не возвращает значения в Python
1
Vad
Привет.
Имеется DLL библиотека написанная на Си.
Описание функций DLL имеется, некоторые функции вызывал успешно.
Но есть функция которая вызывается на не возвращает в переданные ей переменные значения.
вот описание функции DLL:

signed char MyFunc(unsigned char br, unsigned char *atq, unsigned char *sak, unsigned char *uid, unsigned char *uid_len)

br - вход
atq,sak,uid,uid_len -выход

Подключаю библиотеку:

lib = ctypes.WinDLL('DLLFunc.dll')
lib.MyFunc.restype = ctypes.c_byte
lib.MyFunc.argtypes =

Вызываю в питоне функцию так:
atq = ‘'
sak = ’'
uid = ‘'
uid_len = ’'
res = lib.MyFunc(3,atq,sak,uid,uid_len)

В результате в переменных atq sak uid uid_len должны были вернуть значения или указатели на значения точно не знаю. С указателями не работал.
Функция выполняется так как в переменную res возвращается 0, т.е. удачно сработала функция.

Почему в вышеперечисленные переменные не вернулись значения? (Смотрел через Debug)
Может начальная инициализация данных переменных неверная?
Vad
А можно пример инициализации переменной с помощью этих функций?

И как потом из них значение забирать когда оно туда попадет?
Андрей Светлов
Вы читать умеете? http://docs.python.org/py3k/library/ctypes.html?highlight=ctypes#passing-pointers-or-passing-parameters-by-reference
Vad
Андрей Светлов
Вы читать умеете? http://docs.python.org/py3k/library/ctypes.html?highlight=ctypes#passing-pointers-or-passing-parameters-by-reference
Спасибо за пояснения.
Isem
Перед функцией надо поставить модификатор __cdecl.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB