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);
标签:调用,Invoke,C#,C++,int,函数指针 From: https://blog.51cto.com/u_13675550/6171817