日期:2014-05-17  浏览次数:21299 次

在线求助。。。C++的代码转C#
C++函数原型
DT_API BYTE* _DTCALL_  CameraISP(BYTE *pData);
DT_API void _DTCALL_  CameraDisplayRGB24(BYTE *pBmp24);
回调函数定义
typedef int (CALLBACK* DS_SNAP_PROC)(BYTE *pImageBuffer);
C++函数
int CALLBACK SnapThreadCallback(BYTE *pBuffer)
{
BYTE *pBmp24 = CameraISP(pBuffer);
if(pBmp24)
{
CameraDisplayRGB24(pBmp24);
}
return TRUE;
}
转成C#代码怎么写?上网查资料都查过了,主要是卡在CameraISP这里。

------解决方案--------------------
byte pBmp24 = (byte)System.Runtime.InteropServices.Marshal.PtrToStructure(CameraISP(pBuffer), typeof(byte));
------解决方案--------------------
主要是c++中的数据类型与c#中的数据类型对应正确。
DT_API BYTE* _DTCALL_  CameraISP(BYTE *pData);

c++                c#
-----------------------------------
BYTE*   ——————>    ref byte

所以转化后为:
ref byte CameraISP(ref byte pData)

当然, BYTE* 也可以使用IntPtr代替。