次の署名を持つ関数で DLL ファイルを使用したい -
bool isValid = isImageValid((unsigned char *) buff, const __uint32& buffLen,
int imageW, int imageH, __uint32 requiredSize);
さて、バフは、同等のpythonラッパーに取得している文字列から生じる必要があります
pyBuff = open(someimagefile, 'rb').read()
pyBuff は (ほとんどの場合) 大きいため、新しい c uchar 配列を割り当ててコピーするのではなく、元のバッファーを利用したいと考えています。基本的には、pyBuff オブジェクトの char バッファを取得し、ctypes (c_ubyte *) として参照します。
私がそれに最も近いのは次のとおりです。
buff = cast(pyBuff, POINTER(c_ubyte))
しかし、これが私が望むタイプかどうかはわかりません。とにかく、関数は私に次のエラーを与えます
WindowsError: exception: access violation writing 0x00000000
どんな助けでも喜んで..
また、2 つの短い質問:
この DLL (参照として使用している) の既存の C ラッパーで、(これも) これを呼び出す関数が署名を持っていることを考えると、次の定義は正しいですか?
(const char * buff, const __uint32& buffLen)
byref(c_ulong(len(pyBuff))
- CDLL と WinDLL の違いは何ですか? また、どちらを使用するのが適切ですか?