在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中正確實現了回調函數的調用,以及委托的生存期和調用線程等問題。