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替代

相关推荐
苏比的博客1 小时前
Windows MFC添加类,变量,类导向
c++·windows·mfc
yudiandian20141 小时前
MFC - 使用 Base64 对图片进行加密解密
c++·mfc
yudiandian20141 小时前
MFC - Picture Control 控件显示图片
c++·mfc
我是李武涯6 小时前
从`std::mutex`到`std::lock_guard`与`std::unique_lock`的演进之路
开发语言·c++
卡提西亚6 小时前
C++笔记-10-循环语句
c++·笔记·算法
亮剑20187 小时前
第1节:C语言初体验——环境、结构与基本数据类型
c++
William_wL_7 小时前
【C++】类和对象(下)
c++
William_wL_8 小时前
【C++】内存管理
c++
星星火柴9369 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
就是有点傻9 小时前
使用PaddleOCRSharp大模型精选文字识别
c#