У меня есть рабочая программа на Python 2.7, которая вызывает DLL. Я пытаюсь перенести скрипт на python 3.2. Кажется, что вызов DLL работает (т.е. при вызове нет ошибок), но возвращенные данные не имеют смысла.
На всякий случай это может быть полезно:
- Вызов принимает три аргумента: два типа int (входные) и указатель на массив ushort (выходные данные).
Я безуспешно пытался использовать как python, так и numpy массивы.
Может ли кто-нибудь перечислить различия между Python 2.7 и 3.2 в отношении ctypes?
Заранее спасибо
EDIT
Вот пример кода. DLL является проповеднической, поэтому у меня нет кода. Но у меня есть заголовок C:
void example (int width, int height, unsigned short* pointer)
Код Python:
width, height = 40, 100
imagearray = np.zeros((width,height), dtype=np.dtype(np.ushort))
image = np.ascontiguousarray(imagearray)
ptrimage = image.ctypes.data_as(ct.POINTER(ct.c_ushort))
DLL.example(width, height, ptrimage)
Это работает в python 2.7, но не в 3.2.
РЕДАКТИРОВАТЬ 2
Если изменения в ctypes только те, на которые указал Седрик, то не имеет смысла, что Python 3.2 не будет работать. Посмотрев еще раз на код, я обнаружил, что есть функция подготовки, вызываемая перед функцией, о которой я упоминаю. Подпись:
void prepare(char *table)
В питоне я звоню по:
table = str(aNumber)
DLL.prepare(table)
Возможно ли, что проблема связана с изменением обработки строки Python?