c#調用c++的回調函數

c++提供回調函數的接口,給c#調用

c++:

聲明:

typedef void(*SelfDetectCb)(int result);// 設備名稱,狀態(1成功,0失敗)
extern "C" BGISEQEXPORT BOOL WINAPI Seq_AutoSelfDetect(SelfDetectCb callback);

實現:

extern "C" BGISEQEXPORT BOOL WINAPI Seq_AutoSelfDetect(SelfDetectCb callback)
{
  callback(0);

  return TRUE;
}

 

c#:

聲明:
        public delegate void SelfDetectCb(int result);


        [DllImport("BGISequence.dll", EntryPoint = "Seq_AutoSelfDetect", CharSet = CharSet.Unicode)]
        public static extern bool Seq_AutoSelfDetect(SelfDetectCb callback);

調用:

IBGISequence.SelfDetectCb callback = new IBGISequence.SelfDetectCb(CallbackFunc);
            IBGISequence.Seq_AutoSelfDetect(callback);

 

public static void CallbackFunc(int result)
        {
            // 處理
        }

 

備註:這裏的回調函數爲public static類型,但若回調函數中需要處理非靜態成員,就得聲明爲private類型。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章