c#使用c++的dll
来源:互联网 发布:arena软件图片 编辑:程序博客网 时间:2024/05/22 07:53
//C#使用c++dll方法
//回调函数注意参数类型变化,如long型C++ 的长度为32,C# 的长度为64
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ClientControl
{
public partial class MainForm : Form
{
[DllImport("bmpcodec.dll")]
static extern int TXYS_InitSystem();//初始化
[DllImport("bmpcodec.dll")]
static extern int TXYS_ExitSystem();//退出
[DllImport("bmpcodec.dll")]
static extern int TXYS_StartRecvBMP();//开始压缩图像
[DllImport("bmpcodec.dll")]
static extern int TXYS_StopRecvBMP();//停止压缩图像
[DllImport("bmpcodec.dll")]
static extern int TXYS_CheckNetChannel(int iAllowBandWidth); //网络信道检测
[DllImport("bmpcodec.dll")]
static extern int TXYS_RegDataArriveEventHandler(TXYS_DataArriveHandler_t fHandlerFunc); //注册数据到来
[DllImport("bmpcodec.dll")]
static extern int TXYS_RegReqTimeEventHandler(TXYS_RequestTimeHandler_t fHandlerFunc); //注册时间
[DllImport("bmpcodec.dll")]
static extern int TXYS_RegWarnEventHandler(TXYS_WarnHandler_t fHandlerFunc); //注册警告
[DllImport("bmpcodec.dll")]
static extern int TXYS_RegStateNotifyEventHandler(TXYS_StateNotifyHandler_t fHandlerFunc);//注册状态
[DllImport("bmpcodec.dll")]
static extern int TXYS_RegCheckNotifyEventHandler(TXYS_NetCheckNotifyHandler_t fHandlerFunc);//注册网络检测事件
// 函数指针类型
public delegate int TXYS_DataArriveHandler_t(int iImageFrameNo, int iPackNo, int iDataSize, string ucData);
public delegate int TXYS_RequestTimeHandler_t();
public delegate int TXYS_WarnHandler_t(int iFaultNo, int iWarnType);
public delegate int TXYS_StateNotifyHandler_t(long lStartTime, long lEndTime,
long lMinDelayTime, long lMaxDelayTime, long lMeanDelayTime,
int iMaxLostFarmeNum, int iTotalLostFrameNum);
public delegate int TXYS_NetCheckNotifyHandler_t(int iStatus, int iUseBandWidth, int lMeanDelayTime);
private delegate void UpdateDelegate(string str);
//委托操作函数
private void UpdateText(string str)
{
datalabel.Text=str;
}
public static TXYS_DataArriveHandler_t dataArrive;//=new TXYS_DataArriveHandler_t(
public static TXYS_WarnHandler_t warnArrive;
public static TXYS_NetCheckNotifyHandler_t netCheck;
//数据到来回调函数
public int fDataArriveHandler(int iImageFrameNo,int iPackNo, int iDataSize, string ucData)
{
// if (iImageFrameNo < 0)
// return 0;
// MessageBox.Show("" + iImageFrameNo);
UpdateDelegate eh = new UpdateDelegate(UpdateText);
this.datalabel.Invoke(eh, new object[] {iImageFrameNo +"帧,第"+iPackNo+ "包数据到来"+"大小"+iDataSize+ucData });
//datalabel.Text = "" + iImageFrameNo + "帧数据到来";
return 0;
}
//警告事件回调函数
public int fWarnArriveHandle(int iFaultNo, int iWarnType)
{
// MessageBox.Show("" + iFaultNo + "," + iWarnType);
UpdateDelegate eh = new UpdateDelegate(UpdateText);
this.datalabel.Invoke(eh, new object[] { "网络警告" +iFaultNo+","+iWarnType});
return 0;
}
//网络检测事件函数
public int fNetCheckHandle(int iStatus, int iUseBandWidth, int lMeanDelayTime)
{
//MessageBox.Show("" + iStatus + "," + iUseBandWidth + "," + lMeanDelayTime);
UpdateDelegate eh = new UpdateDelegate(UpdateText);
this.datalabel.Invoke(eh, new object[] { "网络事件" + iStatus + "," + iUseBandWidth+","+lMeanDelayTime });
return 0;
}
public MainForm()
{
InitializeComponent();
TXYS_InitSystem();
dataArrive = new TXYS_DataArriveHandler_t(this.fDataArriveHandler);
TXYS_RegDataArriveEventHandler(dataArrive);
warnArrive = new TXYS_WarnHandler_t(this.fWarnArriveHandle);
TXYS_RegWarnEventHandler(warnArrive);
netCheck = new TXYS_NetCheckNotifyHandler_t(this.fNetCheckHandle);
TXYS_RegCheckNotifyEventHandler(netCheck);
}
public delegate int TXYS_DataArriveHandler_t(int iImageFrameNo, int iPackNo, int iDataSize, string ucData);
public delegate int TXYS_RequestTimeHandler_t();
public delegate int TXYS_WarnHandler_t(int iFaultNo, int iWarnType);
public delegate int TXYS_StateNotifyHandler_t(long lStartTime, long lEndTime,
long lMinDelayTime, long lMaxDelayTime, long lMeanDelayTime,
int iMaxLostFarmeNum, int iTotalLostFrameNum);
public delegate int TXYS_NetCheckNotifyHandler_t(int iStatus, int iUseBandWidth, int lMeanDelayTime);
private delegate void UpdateDelegate(string str);
//委托操作函数
private void UpdateText(string str)
{
datalabel.Text=str;
}
public static TXYS_DataArriveHandler_t dataArrive;//=new TXYS_DataArriveHandler_t(
public static TXYS_WarnHandler_t warnArrive;
public static TXYS_NetCheckNotifyHandler_t netCheck;
//数据到来回调函数
public int fDataArriveHandler(int iImageFrameNo,int iPackNo, int iDataSize, string ucData)
{
// if (iImageFrameNo < 0)
// return 0;
// MessageBox.Show("" + iImageFrameNo);
UpdateDelegate eh = new UpdateDelegate(UpdateText);
this.datalabel.Invoke(eh, new object[] {iImageFrameNo +"帧,第"+iPackNo+ "包数据到来"+"大小"+iDataSize+ucData });
//datalabel.Text = "" + iImageFrameNo + "帧数据到来";
return 0;
}
//警告事件回调函数
public int fWarnArriveHandle(int iFaultNo, int iWarnType)
{
// MessageBox.Show("" + iFaultNo + "," + iWarnType);
UpdateDelegate eh = new UpdateDelegate(UpdateText);
this.datalabel.Invoke(eh, new object[] { "网络警告" +iFaultNo+","+iWarnType});
return 0;
}
//网络检测事件函数
public int fNetCheckHandle(int iStatus, int iUseBandWidth, int lMeanDelayTime)
{
//MessageBox.Show("" + iStatus + "," + iUseBandWidth + "," + lMeanDelayTime);
UpdateDelegate eh = new UpdateDelegate(UpdateText);
this.datalabel.Invoke(eh, new object[] { "网络事件" + iStatus + "," + iUseBandWidth+","+lMeanDelayTime });
return 0;
}
public MainForm()
{
InitializeComponent();
TXYS_InitSystem();
dataArrive = new TXYS_DataArriveHandler_t(this.fDataArriveHandler);
TXYS_RegDataArriveEventHandler(dataArrive);
warnArrive = new TXYS_WarnHandler_t(this.fWarnArriveHandle);
TXYS_RegWarnEventHandler(warnArrive);
netCheck = new TXYS_NetCheckNotifyHandler_t(this.fNetCheckHandle);
TXYS_RegCheckNotifyEventHandler(netCheck);
}
~MainForm()
{
//TXYS_ExitSystem();
}
{
//TXYS_ExitSystem();
}
private void MainForm_Load(object sender, EventArgs e)
{
}
//启动图像传输
private void ButtonStart_Click(object sender, EventArgs e)
{
TXYS_StartRecvBMP();
}
{
}
//启动图像传输
private void ButtonStart_Click(object sender, EventArgs e)
{
TXYS_StartRecvBMP();
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
TXYS_ExitSystem();
}
{
TXYS_ExitSystem();
}
private void buttonStop_Click(object sender, EventArgs e)
{
TXYS_StopRecvBMP();
}
{
TXYS_StopRecvBMP();
}
private void buttonNetcheck_Click(object sender, EventArgs e)
{
TXYS_CheckNetChannel(1024);
}
{
TXYS_CheckNetChannel(1024);
}
}
}
}
- 在C#中使用C/C++写的DLL
- 在C#中使用C/C++写的DLL
- 如何在C#中使用C/C++写的DLL。
- 在C#中使用C/C++写的DLL
- 使用C#调用C编译的DLL文件示例
- C#使用C/C++编译的动态链接库dll
- C#调用C的DLL
- C#中使用DllImport调用C++dll
- c#使用c++的dll
- C#中使用OpenGL:(二)C#调用C/C++的dll
- C#调用C++DLL的方法
- C#动态调用c++DLL的方法
- 编写C#调用的C++DLL
- 编写C#调用的C++DLL
- C#调用C++dll的类型转换
- c#调用C/C++生成的dll
- C#调用C++DLL的类型对应
- C#动态调用c++DLL的方法
- Tomcat5.0.30升级到支持java1.5语法
- java中读取资源文件
- 《给初学者的Windows Vista的补遗手册》之056
- 九寨沟归来
- C++笔记2
- c#使用c++的dll
- 程序员成功之路
- linux下的信号处理
- 八皇后问题
- 离开公司感言
- shell技巧
- 什么是shell
- 在redhat Linux9下安装Oracle9.2.0的一点经验
- Oracel9i的使用和oemapp相关命令