调用c++写的Dll文件并且有回调的写法

其中回调函数为 RenderCallback p_func

/// <summary>
        /// 初始化
        /// </summary>
        /// <param name="p_enterise_id">企业ID</param>
        /// <param name="p_settings">设备属性</param>
        /// <param name="p_device_infos">获取到设备信息 JSON</param>
        /// <param name="p_server_url">预留的server URL地址,目前可设置为"https://evn.xjnetworks.com/" </param>
        /// <param name="p_func">回调函数接口</param>
        /// <returns></returns>
        [DllImport("xjsdk.dll", EntryPoint = "XJSdkInit", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
        public static extern int XJSdkInit(string p_enterise_id, string p_settings, string p_device_infos, string p_server_url, RenderCallback p_func);

1定义委托类:

  /// <summary>
        /// 设定委托
        /// </summary>
        /// <param name="event_type"></param>
        /// <param name="p_data"></param>
        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
        public delegate void RenderCallback(int event_type, string p_data);
 public static RenderCallback RemoteMsgCallBack;///实例化
        public static void RegistRemoteMsgCallBack(string p_enterise_id, string p_settings, string p_device_infos, string p_server_url, RenderCallback p_func)
        {
           XJSdkInit(p_enterise_id, p_settings, p_device_infos, p_server_url, RemoteMsgCallBack); 
        }///重写操作

程序端调用方法:

 DllBaseSDK.RemoteMsgCallBack = CallBackFunction;
    DllBaseSDK.RegistRemoteMsgCallBack(Mmsg.QiyeId, Mmsg.SBName, MsgAll, Url, CallBackFunction);

也可以是这样的:

 public RenderCallback globalCallbackProcedure;//全局调用委托
 
 globalCallbackProcedure = new RenderCallback(CallBackFunction);//loading里写
 
  DllBaseSDK.RegistRemoteMsgCallBack(Mmsg.QiyeId, Mmsg.SBName, MsgAll, Url, globalCallbackProcedure );//最后是调用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值