zoukankan      html  css  js  c++  java
  • C#处理C++库回调报错_非托管代码传递委托被垃圾回收

    检测到 CallbackOnCollectedDelegate
    Message: 对“HBVideoParser!Videocomm.Video.HB.HBSDK+SrcDataParseCBHandler::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。

            [DllImport("...")]
            public static extern bool HB_SDVR_SetParseCallBack(int lRealHandle, SrcDataParseCBHandler SrcDataParseCBFun, int nRseserved);

            [UnmanagedFunctionPointer(CallingConvention.StdCall)]
            public delegate void SrcDataParseCBHandler(int nChl, System.IntPtr SrcDataBuf, int nSize, int nFrameType, VIDEO_TIME ets, int user);

            SrcDataParseCBHandler srcDataParseCBHandler ;
            public int Start()
            {
                ...

                    srcDataParseCBHandler = OnSrcDataParseCBHandler;
                    bool resb = HBSDK.HB_SDVR_SetParseCallBack(CookieID, srcDataParseCBHandler, CookieID);
        ...    

            }
     

      public void OnSrcDataParseCBHandler(int nChl, System.IntPtr SrcDataBuf, int nSize, int nFrameType,                                VIDEO_TIME ets, int user)
            {...}

  • 相关阅读:
    教程:如何手动安装Xamarin与Xamarin for VisualStudio
    安装matplotlib
    pycharm中文专业版安装使用
    在win7下安装PowerShell 5.0遇到的坑
    1997-2017
    系统界面截图
    组态与非组态结合的LT
    opencv mat转qimage
    QTableWidget 样式文件
    hiredis window 源码编译
  • 原文地址:https://www.cnblogs.com/joe62/p/1626900.html
Copyright © 2011-2022 走看看