BYTE* pImageBuffer = NULL;
eResult res = PlayerLib::CreateImageSnapshot( iPlayerRef, eBMP, &pImageBuffer );
if( res > 0 )
{
.... // do something with the image
WriteFile(FileHandle, pBuffer, eRes, NULL, NULL);
ReleaseImageSnapshot( pImageBuffer ); // free the image buffer in not longer needed!
}
这里我可以在pImageBuffer中接收图像数据,我可以做一些图像处理
就像我在c#中尝试的那样
[DllImport("PlayerLib")]
public static extern int CreateImageSnapshot(int iPlayerRef, eImageFormat imgFormat,byte[] ppImageBuffer);
byte[] bte ;
CreateImageSnapshot(iPlayerref,eImageFormat.ePNG,bte);
这里给出了一些unhandeld异常.....希望问题出在byte []但是我不能指出...... 请帮助我克服它....提前感谢
这里它会在ppImageBuffer中返回imagedata ...但是这里只给出零字节
答案 0 :(得分:0)
向我看的一件事是CreateImageSnapshot的C#声明。由于您的C ++代码是正确的,第三个参数必须是BYTE **。但是在C#中你有第三个参数作为byte [],它感觉就像一个不兼容的类型。
答案 1 :(得分:0)
我建议您将BYTE **
作为ref IntPtr
进行调整。
您的声明将是:
[DllImport("PlayerLib")]
public static extern int CreateImageSnapshot(int iPlayerRef,
eImageFormat imgFormat, ref IntPtr ppImageBuffer);
P.S。对不起我的英语,伙计们;)