У меня есть работающая программа на питоне 2.7, которая вызывает DLL. Я пытаюсь перенести скрипт на питон 3.2. Вызов DLL вроде бы работает (т.е. ошибки при вызове нет), но возвращаемые данные не имеют смысла.
На всякий случай это может оказаться полезным: - Вызов принимает три аргумента: два int (input) и указатель на массив ushort (output).
Я безуспешно пытался использовать и питоновые, и нумеровые массивы.
Может ли кто-нибудь перечислить различия между питоновыми массивами 2.7 и 3.2 с учетом стипов?
Заранее спасибо
EDIT
Вот пример кода. DLL является пропиетарной, поэтому у меня нет этого кода. Но у меня есть заголовок C:
void example (int width, int height, unsigned short* pointer)
Код на питоне:
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)
Он работает на питоне 2.7, но не на 3.2.
EDIT 2
Если изменения втипах - это только те, на которые указал Седрик, то нет смысла в том, что питон 3.2 не будет работать. Поэтому, глядя на код еще раз, я обнаружил, что есть функция подготовки, вызываемая перед функцией, о которой я упоминаю. Сигнатура:
void prepare(char *table)
На питоне я вызываю:
table = str(aNumber)
DLL.prepare(table)
Возможно ли, что проблема связана с изменением в работе с Python string?