C# 调用C++的dll问题
C++的DLL提供了一个设置相机白平衡的函数,它的使用方法如下:
// 第一步:打开自动白平衡开关
int nValue = TRUE;
int nLength = sizeof(BOOL);
HVSTATUS status = HVCommand(m_hhv, CMD_ENABLE_AUTO_WHITEBALANCE, &nValue, &nLength);
HV_VERIFY(status);
// 第二步:在回调函数中调用HVBayerToRGB函数
int CALLBACK CmyClass::SnapCallback(HV_SNAP_INFO *pInfo)
{
CmyClass *pMyClass = (CmyClass *)(pInfo->pParam);
// Bayer图像转换为RGB图像
HVBayerToRGB(pMyClass->m_hhv, // 设备句柄
pMyClass->m_pRawBuffer, // 原始数据缓冲区(输入)
pMyClass->m_nMaxWidth, // 图像宽度
pMyClass->m_nMaxHeight, // 图像高度
true, // 翻转图像
(HV_ADC_LEVEL)pMyClass->m_nADCLevel, // AD转换级别
BAYER2RGB_NEIGHBOUR1, // Raw2RGB算法
pMyClass->m_pImageBuffer, // 转换后的缓冲区(输出)
&( pMyClass->m_wbRatio) // 白平衡比例系数
);
……
}
在C#中这个方法被转换为
public extern static HVSTATUS HVCommand(IntPtr pHandle, HV_COMMAND_CODE CommandCode, IntPtr pContext, IntPtr pLength);
最后两个参数我该定义什么类型,输入什么值?
------解决方案-------------------- &符号应该是引用吧,貌似要写
public extern static HVSTATUS HVCommand(IntPtr pHandle, HV_COMMAND_CODE CommandCode,out int pContext,out int pLength);
------解决方案--------------------你都定义成指针类型IntPtr了,那就传