c#调用c++ 封装的dll 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 c++c#数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struct DEV_ENCODER_INFO{ char szDevIp[DH_MAX_IPADDR_LEN]; WORD wDevPort; BYTE bDevChnEnable; BYTE byDecoderID; char szDevUser[DH_USER_NAME_LENGTH_EX]; char szDevPwd[DH_USER_PSW_LENGTH_EX]; int nDevChannel; int nStreamType; BYTE byConnType; BYTE byWorkMode; WORD wListenPort; DWORD dwProtoType; char szDevName[64]; BYTE byVideoInType; char szDevIpEx[DH_MAX_IPADDR_OR_DOMAIN_LEN]; BYTE bySnapMode; BYTE byManuFactory; BYTE byDeviceType; BYTE byDecodePolicy; BYTE bReserved[3]; DWORD dwHttpPort; DWORD dwRtspPort; char reserved[36];};上面是c++的结构体定义下面是我在c#中的定义 /// <summary> /// 编码器信息 /// </summary> [StructLayout(LayoutKind.Sequential)] public struct DEV_ENCODER_INFO { /// <summary> /// 前端DVR的IP地址 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string szDevIP; /// <summary> /// 前端DVR的端口号 /// </summary> //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] public ushort wDevPort; /// <summary> /// 解码通道使能 /// </summary> [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] bDevChnEnable; // public byte bDevChnEnable; /// <summary> /// 对应解码通道号 /// </summary> // public byte byDecoderID; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byDecoderID; /// <summary> /// 用户名 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string szDevUser; /// <summary> /// 密码 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string szDevPwd; /// <summary> /// 通道号 /// </summary> public int nDevChannel; /// <summary> /// 码流类型 /// </summary> public int nStreamType; /// <summary> /// 链接类型 0:TCP 1:UDP 2:组播 /// </summary> // public byte byConnType; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byConnType; /// <summary> /// 0:直连 1:转发 /// </summary> //public byte byWorkMode; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byWorkMode; /// <summary> /// 指示侦听服务的端口,转发时有效 /// </summary> // [MarshalAs(UnmanagedType.ByValArray ,SizeConst = 64)] public ushort wListenPort; /// <summary> /// 0:兼容以前 1:大华二代协议 2:大华系统集成协议 3:大华DSS协议 4:大华rtsp协议 /// </summary> //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public uint dwProtoType; /// <summary> /// 前端设备名称 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public string szDevName; /// <summary> /// 该解码通道当前视频源类型:0-标清(SD) 1-高清(HD) 注:设备支持高清通道才有效 /// </summary> //public byte byVideoInType; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byVideoInType; /// <summary> /// szDevip扩展,前端DVR的IP地址(可以输入域名) /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public string szDevIpEx; /// <summary> /// 抓图模式(nStreamType==2时有效) 0:表示请求一帧,1:表示定时发送请求 /// </summary> // public byte bySnapMode; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] bySnapMode; /// <summary> /// 目标设备的生产厂商,0:Private(大华私有),1: AEBell(美电) /// </summary> // public byte byManuFactory; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byManuFactory; /// <summary> /// 目标设备的设备类型,0:IPC /// </summary> // public byte byDeviceType; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byDeviceType; /// <summary> /// 目标设备的解码策略,0:兼容以前 1:实时等级高 2:实时等级中 3:实时等级低 4:默认等级 5:流畅等级高 6:流畅等级中 7:流畅等级低 /// </summary> // public byte byDecodePolicy; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public Byte[] byDecodePolicy; /// <summary> /// 保留 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)] public string bReserved; /// <summary> /// Http端口号,0-65535 /// </summary> // [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public uint dwHttpPort; /// <summary> /// Rtsp端口号,0-65535 /// </summary> //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public uint dwRtspPort; ///// <summary> ///// ///// </summary> //[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] // public string szChnName; /// <summary> /// /// </summary [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)] public string reserved; }我自己分析 是数据类型的问题 但我不知道 具体到哪个 急用 在线等 怎么让C#Form1一出来就居中?我的没有StartPosition属性啊。 panel控件中加载多个窗体,如何判断,不存在就实例化,存在就显示已有的窗体呢? 这段代码是什么意思? 求教textbox问题。 怎样在datagridview中添加超链接,通过文字来连接 求一个正则表达式的写法 在C#.NET如何得到当前系统中的可连接数据库服务器和对应数据库服务器中的所有数据库?谢谢 Notyfyicon 实现最小化到托盘 treeview和listbox如何使用doubleclick事件? 用人体肢体动作控制机器人 求个正则表达式,字符串 获取问题 C#服务实时抓取xml文件内容~~~
char szDevIp[DH_MAX_IPADDR_LEN];
WORD wDevPort;
BYTE bDevChnEnable;
BYTE byDecoderID;
char szDevUser[DH_USER_NAME_LENGTH_EX];
char szDevPwd[DH_USER_PSW_LENGTH_EX];
int nDevChannel;
int nStreamType;
BYTE byConnType;
BYTE byWorkMode;
WORD wListenPort;
DWORD dwProtoType;
char szDevName[64];
BYTE byVideoInType;
char szDevIpEx[DH_MAX_IPADDR_OR_DOMAIN_LEN];
BYTE bySnapMode;
BYTE byManuFactory;
BYTE byDeviceType;
BYTE byDecodePolicy;
BYTE bReserved[3];
DWORD dwHttpPort;
DWORD dwRtspPort;
char reserved[36];
};
上面是c++的结构体定义
下面是我在c#中的定义
/// <summary>
/// 编码器信息
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct DEV_ENCODER_INFO
{
/// <summary>
/// 前端DVR的IP地址
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string szDevIP;
/// <summary>
/// 前端DVR的端口号
/// </summary>
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public ushort wDevPort;
/// <summary>
/// 解码通道使能
/// </summary>
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] bDevChnEnable;
// public byte bDevChnEnable;
/// <summary>
/// 对应解码通道号
/// </summary>
// public byte byDecoderID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byDecoderID;
/// <summary>
/// 用户名
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string szDevUser;
/// <summary>
/// 密码
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string szDevPwd;
/// <summary>
/// 通道号
/// </summary>
public int nDevChannel;
/// <summary>
/// 码流类型
/// </summary>
public int nStreamType;
/// <summary>
/// 链接类型 0:TCP 1:UDP 2:组播
/// </summary>
// public byte byConnType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byConnType;
/// <summary>
/// 0:直连 1:转发
/// </summary>
//public byte byWorkMode;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byWorkMode;
/// <summary>
/// 指示侦听服务的端口,转发时有效
/// </summary>
// [MarshalAs(UnmanagedType.ByValArray ,SizeConst = 64)]
public ushort wListenPort;
/// <summary>
/// 0:兼容以前 1:大华二代协议 2:大华系统集成协议 3:大华DSS协议 4:大华rtsp协议
/// </summary>
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public uint dwProtoType;
/// <summary>
/// 前端设备名称
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public string szDevName;
/// <summary>
/// 该解码通道当前视频源类型:0-标清(SD) 1-高清(HD) 注:设备支持高清通道才有效
/// </summary>
//public byte byVideoInType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byVideoInType;
/// <summary>
/// szDevip扩展,前端DVR的IP地址(可以输入域名)
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public string szDevIpEx;
/// <summary>
/// 抓图模式(nStreamType==2时有效) 0:表示请求一帧,1:表示定时发送请求
/// </summary>
// public byte bySnapMode;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] bySnapMode;
/// <summary>
/// 目标设备的生产厂商,0:Private(大华私有),1: AEBell(美电)
/// </summary>
// public byte byManuFactory;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byManuFactory;
/// <summary>
/// 目标设备的设备类型,0:IPC
/// </summary>
// public byte byDeviceType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byDeviceType;
/// <summary>
/// 目标设备的解码策略,0:兼容以前 1:实时等级高 2:实时等级中 3:实时等级低 4:默认等级 5:流畅等级高 6:流畅等级中 7:流畅等级低
/// </summary>
// public byte byDecodePolicy;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Byte[] byDecodePolicy;
/// <summary>
/// 保留
/// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string bReserved;
/// <summary>
/// Http端口号,0-65535
/// </summary>
// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public uint dwHttpPort;
/// <summary>
/// Rtsp端口号,0-65535
/// </summary>
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public uint dwRtspPort;
///// <summary>
/////
///// </summary>
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
// public string szChnName;
/// <summary>
///
/// </summary
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
public string reserved; }我自己分析 是数据类型的问题 但我不知道 具体到哪个 急用 在线等