У меня есть библиотека C ++, функции которой вызываются со стороны Python. Одна из функций получает указатель на массив, который на стороне Python имеет значения в [0: 255] и определяется как
seq1=numpy.array(image,dtype=numpy.uint8).flatten()
seq=numpy.zeros((w*h*3),dtype=numpy.uint8)
вызов функции идет как
myCppFunction(ctypes.c_void_p(seq.ctypes.data),
ctypes.c_void_p(seq1.ctypes.data),
...)
на стороне C ++ функция определяется как
void myCppFunction(ushort *seq, ushort *sequence1, ...)
Когда я просто печатаю то, что получаю на стороне C ++, как seq, sequence1, я получаю значения, которые намного выше неподписанного короткого диапазона, и последовательность нулей не заполнена нулями.
Компиляция идет хорошо, но реальный запуск приводит к ошибке сегментации.
Где я не прав?
ushort
2 байта и numpy.uint8
1 байт.
Других решений пока нет …