c#

c#dllimport 如何处理回调函数

小樊
121
2024-07-15 15:53:36
栏目: 编程语言

在C#中使用DllImport来调用C/C++编写的DLL时,可以通过委托来定义回调函数,并将其作为参数传递给DLL中的函数。以下是一个简单的示例:

首先,在C#中定义一个委托来表示回调函数:

delegate void CallbackDelegate(int value);

然后,通过DllImport导入DLL中的函数,并将委托作为参数传递:

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);
    }
}

在上面的示例中,首先定义了一个委托CallbackDelegate,然后在Main方法中创建一个委托实例callback,并将其传递给RegisterCallback函数。在RegisterCallback函数中,DLL会调用传入的委托实例来执行回调函数。

需要注意的是,确保在DLL中正确实现了回调函数的调用,以及委托的生存期和调用线程等问题。

0
看了该问题的人还看了