C#调用C++ 平台调用P/Invoke 函数指针/回调函数【二】
2014-09-18 20:44
253 查看
【1】C++代码
定义函数指针:
定义导出函数,返回函数指针:
【2】C# 导入代码
定义对应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#调用C++ 平台调用P/Invoke 错误码LastError【四】
- 平台调用 4000 P-INVOKE完全掌握,C#和C++互相调用
- C#调用C++ 平台调用P/Invoke 结构体--输入输出参数、返回值、返出值、结构体数组作为参数【五】
- C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】
- c#编程指南——平台调用P-INVOKE完全掌握,C#和C++互相调用
- c#编程指南(九) 平台调用P-INVOKE完全掌握,C#和C++互相调用
- C#调用C++ 平台调用P/Invoke 结构体--含有内置数据类型的一维、二维数组、字符串指针【六】
- C#调用C++ 平台调用P/Invoke 结构体--内存对齐方式、union封装【七】
- C#调用C++ 平台调用P/Invoke 字符串【三】
- C#调用C++ 平台调用P/Invoke 调用约定【一】
- C#进行平台调用时利用C++头文件的小技巧
- C# 中调用C++ DLL (P/Invoke)
- C#进行平台调用时利用C++头文件的小技巧
- C# 中调用C++ DLL (P/Invoke)
- C#调用C++的库 P/Invoke工具集
- C#通过p/invoke调用C++ DLL
- C# 中调用C++ DLL (P/Invoke)
- C# 中调用C++ DLL (P/Invoke) - C++ - 海洋博客C++,net,tag,
- C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法