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);
}