0
点赞
收藏
分享

微信扫一扫

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


Git p-invoke 源码地址

 

C#调用C++ 平台调用P/Invoke 调用约定【一】

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

C#调用C++ 平台调用P/Invoke 字符串【三】

C#调用C++ 平台调用P/Invoke 错误码LastError【四】

C#调用C++ 平台调用P/Invoke 结构体--输入输出参数、返回值、返出值、结构体数组作为参数【五】

C#调用C++ 平台调用P/Invoke 结构体--含有内置数据类型的一维、二维数组、字符串指针【六】

C#调用C++ 平台调用P/Invoke 结构体--内存对齐方式、union封装【七】

C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】

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

 

 

举报

相关推荐

C++:函数指针,回调函数

0 条评论