Форум сайта python.su
0
Привет.
Имеется 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)
Может начальная инициализация данных переменных неверная?
Офлайн
14
Офлайн
0
А можно пример инициализации переменной с помощью этих функций?
И как потом из них значение забирать когда оно туда попадет?
Офлайн
14
Офлайн
0
Андрей СветловСпасибо за пояснения.
Вы читать умеете? http://docs.python.org/py3k/library/ctypes.html?highlight=ctypes#passing-pointers-or-passing-parameters-by-reference
Офлайн
7
Перед функцией надо поставить модификатор __cdecl.
Офлайн