【1】C++代码
定义函数指针:
typedef int (*PCALLBACKFUN)(int i);
/************************************************************************/
/* 2. 函数指针 */
/************************************************************************/
int PrintInt( int i )
{
return(wprintf(L"CallBack_GetFunPtr %d\n", i));
}
EXPORTDLL_API PCALLBACKFUN CallBack_GetFunPtr()
{
return(PrintInt);
}
定义对应C++函数指针的委托:
public delegate int DelegateGetFunPtrType(int i);
定义导入函数:
[DllImport("ExportDll.dll", CharSet = CharSet.Unicode)]
[return:MarshalAs(UnmanagedType.FunctionPtr)]
public static extern DelegateGetFunPtrType CallBack_GetFunPtr();
测试:
CExportDll.DelegateGetFunPtrType printInt = CExportDll.CallBack_GetFunPtr();
printInt(100);