日期:2014-05-18  浏览次数:20855 次

c#调用C++dll 函数变量转化问题,在线等~
先做一项目 因为要用到C++写的dll的接口函数:
对函数变量的转换实在是晕头了,请教各位大神了
下面举例列一个函数:
HQDL_API HqDLInitialize(
IN LPCTSTR pFilterName,
OUT int *pIndex,
IN CapInfoStruct *pCapInfo,
OUT HANDLE *hCamera
);
参数: pIndex 返回摄像头索引
pFilterName 保留
pCapInfo 初始化摄像头参数 
hCamera 返回给调用者的设备句柄
CapInfoStruct结构定义:
struct CapInfoStruct 
{
UCHAR *Buffer; // 用户分配,用于接收采集的原始数据8bit
ULONG Height; // 采集高度
ULONG Width; // 采集宽度
ULONG OffsetX; // 水平偏移
ULONG OffsetY; // 垂直偏移
ULONG Exposure; // 曝光值 1-500MS
UCHAR Gain[3]; // R G B 增益 1-63
UCHAR Control; // 控制位
UCHAR InternalUse; // 用户不要对此字节进行操作
UCHAR ColorOff[3]; // 用户从外面不要改变此数组的值,要调用EnableColorOffset来改变
UCHAR Reserved[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;     // 用户分配,用于接收采集的原始数据8bit
ULInt32    Height;     // 采集高度
ULInt32 Width;     // 采集宽度
ULInt32    OffsetX;     // 水平偏移
ULInt32    OffsetY;     // 垂直偏移
ULInt32    Exposure;     // 曝光值 1-500MS
UCHAR    Gain[3];     // R G B 增益 1-63
UCHAR    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);
}