首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 调用C++的dll有关问题

2014-01-19 
C#调用C++的dll问题C++的DLL提供了一个设置相机白平衡的函数,它的使用方法如下:// 第一步:打开自动白平衡

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);
最后两个参数我该定义什么类型,输入什么值?

[解决办法]
为什么不试下我写的那个加out的那个方法呢。。。C#  调用C++的dll有关问题
你原函数明明用的&引用符号,函数里面会对输入的参数的值进行更改,你自己写的函数输入一个(IntPtr)1, (IntPtr)4,函数里面当然赋值出错啊~
[解决办法]


你原函数明明用的&引用符号,函数里面会对输入的参数的值进行更改,你自己写的函数输入一个(IntPtr)1, (IntPtr)4,函数里面当然赋值出错啊~


应该用 ref 吧··
[解决办法]

你原函数明明用的&引用符号,函数里面会对输入的参数的值进行更改,你自己写的函数输入一个(IntPtr)1, (IntPtr)4,函数里面当然赋值出错啊~


应该用 ref 吧··
貌似应该是ref。。没注意他前面给2个参数赋值了。。

热点排行