C#动态调用C++DLL中的函数

DLL中导出的函数

cpp 复制代码
typedef void (*HQ_MSG_CALLBACK)(void *h, int nMsg, int nMsgType, int nReqNo, const char *szData, int nSize);
void SetMsgFunc(void *h, HQ_MSG_CALLBACK pmsgCallBack);

C#动态调用上述函数

csharp 复制代码
public delegate void CALLBACK(IntPtr h, int nMsg, int nMsgType, int nReqNo, IntPtr data, int nSize);
[DllImport(DllPath, CallingConvention = CallingConvention.Cdecl)]
private static extern void SetMsgFunc(CALLBACK pmsgCallBack);


public static void HQCallBack(IntPtr h, int nMsg, int nMsgType, int nReqNo, IntPtr data, int nSize)
{}
HQ_MSG_CALLBACK callBackFunc = new HQ_MSG_CALLBACK(HQCallBack);
SetMsgFunc(callBackFunc);//也可直接传HQCallBack函数名

其中函数指针由委托delegate替代,使用时可以传委托对象,也可以直接传函数名;指针由IntPtr替代

相关推荐
rockey62711 小时前
AScript之事件处理脚本
c#·.net·script·动态脚本
feng_you_ying_li14 小时前
C++复习二,继承与多态
c++
小小de风呀14 小时前
de风——【从零开始学C++】(十一):list的基本使用和模拟实现
开发语言·c++·list
陌路2014 小时前
C++高级进阶--夯实进阶基础(1)
开发语言·c++
郝学胜-神的一滴16 小时前
中级OpenGL教程 008:精准控制高光光斑大小与强度
c++·unity·godot·three.js·图形学·opengl·unreal
蛋蛋的学习记录16 小时前
C#窗体应用中使用EasyModbusCore通讯
服务器·c#·tcp
牢姐与蒯16 小时前
c++数据结构之c++11(一)
数据结构·c++
ShyanZh16 小时前
Markitdown 多格式文档智能解析实战指南
开发语言·c#
折戟不必沉沙16 小时前
构造和析构函数能否是虚函数?能否调用虚函数?
c++
-To be number.wan17 小时前
算法日记 | STL- sort排序
c++·算法