Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 26, 2011 14:24:01

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция из DLL не возвращает значения в Python

Привет.
Имеется 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)
Может начальная инициализация данных переменных неверная?



Офлайн

#2 Авг. 26, 2011 14:50:19

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Офлайн

#3 Авг. 26, 2011 14:56:38

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция из DLL не возвращает значения в Python

А можно пример инициализации переменной с помощью этих функций?

И как потом из них значение забирать когда оно туда попадет?



Офлайн

#4 Авг. 26, 2011 18:08:34

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Функция из DLL не возвращает значения в Python

Офлайн

#5 Авг. 26, 2011 18:17:35

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция из DLL не возвращает значения в Python

Андрей Светлов
Вы читать умеете? http://docs.python.org/py3k/library/ctypes.html?highlight=ctypes#passing-pointers-or-passing-parameters-by-reference
Спасибо за пояснения.



Офлайн

#6 Авг. 26, 2011 18:39:33

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Функция из DLL не возвращает значения в Python

Перед функцией надо поставить модификатор __cdecl.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version