在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)用線程等問題。