У меня есть рабочая программа python 2.7, которая вызывает DLL. Я пытаюсь перенести script на python 3.2. Кажется, что вызов DLL работает (т.е. Нет ошибки при вызове), но возвращаемые данные не имеют смысла.
На всякий случай это может быть полезно: - Звонок принимает три аргумента: два int (ввод) и указатель на массив ushort (вывод).
Я пробовал использовать массивы python и numpy без успеха.
Может ли кто-нибудь перечислить различия между Python 2.7 и 3.2 в отношении ctypes?
Заранее спасибо
ИЗМЕНИТЬ
Вот пример кода. 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)
В python я звоню:
table = str(aNumber)
DLL.prepare(table)
Возможно ли, что проблема связана с изменением обработки строки Python?