1

私はc++ライブラリを持っており、その関数はPython側から呼び出されます。関数の1つは、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として単純に出力すると、符号なしの短距離をはるかに超える値が得られ、ゼロシーケンスはゼロで埋められません。コンパイルは正常に行われますが、実際に実行するとセグメンテーション違反が発生します。どこが間違っているの?

4

1 に答える 1

3

ushortは2バイトで、numpy.uint8は1バイトです。

于 2013-01-24T21:13:13.523 に答える