您的位置:首页 > 编程语言 > C语言/C++

C#调用C++ 平台调用P/Invoke 函数指针/回调函数【二】

2014-09-18 20:44 253 查看
【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);
}


【2】C# 导入代码


定义对应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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: