c#dllimport 如何處理回調(diào)函數(shù)

c#
小樊
110
2024-07-15 15:53:36
欄目: 編程語言

在C#中使用DllImport來調(diào)用C/C++編寫的DLL時(shí),可以通過委托來定義回調(diào)函數(shù),并將其作為參數(shù)傳遞給DLL中的函數(shù)。以下是一個(gè)簡單的示例:

首先,在C#中定義一個(gè)委托來表示回調(diào)函數(shù):

delegate void CallbackDelegate(int value);

然后,通過DllImport導(dǎo)入DLL中的函數(shù),并將委托作為參數(shù)傳遞:

class Program
{
    [DllImport("yourDLL.dll")]
    public static extern void RegisterCallback(CallbackDelegate callback);

    static void Main(string[] args)
    {
        CallbackDelegate callback = new CallbackDelegate(CallbackFunction);
        RegisterCallback(callback);
    }

    static void CallbackFunction(int value)
    {
        Console.WriteLine("Callback called with value: " + value);
    }
}

在上面的示例中,首先定義了一個(gè)委托CallbackDelegate,然后在Main方法中創(chuàng)建一個(gè)委托實(shí)例callback,并將其傳遞給RegisterCallback函數(shù)。在RegisterCallback函數(shù)中,DLL會(huì)調(diào)用傳入的委托實(shí)例來執(zhí)行回調(diào)函數(shù)。

需要注意的是,確保在DLL中正確實(shí)現(xiàn)了回調(diào)函數(shù)的調(diào)用,以及委托的生存期和調(diào)用線程等問題。

0