c#调用C++dll 函数变量转化问题,在线等~
先做一项目 因为要用到C++写的dll的接口函数:
对函数变量的转换实在是晕头了,请教各位大神了
下面举例列一个函数:
HQDL_API HqDLInitialize(
IN LPCTSTRpFilterName,
OUT int*pIndex,
IN CapInfoStruct *pCapInfo,
OUT HANDLE*hCamera
);
参数: pIndex返回摄像头索引
pFilterName保留
pCapInfo初始化摄像头参数
hCamera返回给调用者的设备句柄
CapInfoStruct结构定义:
struct CapInfoStruct
{
UCHAR*Buffer;// 用户分配,用于接收采集的原始数据8bit
ULONGHeight;// 采集高度
ULONGWidth;// 采集宽度
ULONGOffsetX;// 水平偏移
ULONGOffsetY;// 垂直偏移
ULONGExposure;// 曝光值 1-500MS
UCHARGain[3];// R G B 增益 1-63
UCHARControl;// 控制位
UCHARInternalUse;// 用户不要对此字节进行操作
UCHARColorOff[3];// 用户从外面不要改变此数组的值,要调用EnableColorOffset来改变
UCHARReserved[4];// 保留位
};
此函数 为需要调用的c++里dll的函数;
public class formload
{
//[DllImport("MyDLL.dll")]
[DllImport("HQDLAPI.dll")]
public static extern HqDLInitialize(1,2,3,4);
}
问题主要是在调用时参数对应方法不会,请指教!分数不多,但已经是全部了!
[解决办法]
- C# code
HQDL_API HqDLInitialize( IntPtr pFilterName,out ref int pIndex, ref CapInfoStruct pCapInfo,out ref IntPtr hCamera); 参数: pIndex 返回摄像头索引pFilterName 保留pCapInfo 初始化摄像头参数 hCamera 返回给调用者的设备句柄CapInfoStruct结构定义:public struct CapInfoStruct {string Buffer; // 用户分配,用于接收采集的原始数据8bitULInt32 Height; // 采集高度ULInt32 Width; // 采集宽度ULInt32 OffsetX; // 水平偏移ULInt32 OffsetY; // 垂直偏移ULInt32 Exposure; // 曝光值 1-500MSUCHAR Gain[3]; // R G B 增益 1-63UCHAR Control;//char数组我记得不清了,你自己查一查 // 控制位Byte InternalUse; // 用户不要对此字节进行操作Byte ColorOff[3]; // 用户从外面不要改变此数组的值,要调用EnableColorOffset来改变UCHAR Reserved[4]; // 保留位};此函数 为需要调用的c++里dll的函数; public class formload{ [DllImport("HQDLAPI.dll")] public static extern HqDLInitialize(1,2,3,4);}