C# 回调 C++ dll 函数

一个简单的dll回调函数     例:

//c++ 一个简单回调函数(导出函数)


typedef void (WINAPI *StatusChangeFun)(int status);
StatusChangeFun statusChanged;

void WINAPI init_set(StatusChangeFun fun)
{
	statusChanged = fun;	//设置回调函数
}

//调用的时候
statusChanged(1);
statusChanged(2);

C# 四步

    // c# 代码
    
    public class Form1 : Form
    {
        //1 . 回调的函数声明
       [UnmanagedFunctionPointerAttribute(
           CallingConvention.StdCall, 
           CharSet = CharSet.Ansi)]
       public delegate void StatusChangeProc(int status); 

       //2.  回调的设置函数
       [DllImport(@"test.dll",
           CharSet = CharSet.Ansi,
           EntryPoint = "init_set",
           CallingConvention = CallingConvention.StdCall)]
       //   导入函数可以设置别名: 
       //public static extern void init_set(Delegate callback);         //格式1
       public static extern void init_set(StatusChangeProc callback);   //格式2  (建议)


       //3.  回调函数的定义(本体实现)
       static void StatusChange(int status)
       {
           //状态变化
       }



        private void Form1_Load(object sender, EventArgs e)
        {
            //4. 回调函数的设置
            //init_set((StatusChangeProc)StatusChange);     //格式1,2都可用
            init_set(StatusChange);                         //格式2   
        }

步骤2的参数 和 步骤1有关

步骤1, 3, 4 参数   互相有关

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值