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

相关推荐
曹牧6 小时前
C#:无法从方法组转换为objec
开发语言·c#
AA陈超7 小时前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
coderxiaohan7 小时前
【C++】仿函数 + 模板进阶
开发语言·c++
刘欣的博客8 小时前
C# 从API接口获取对象而不用先定义对象类
c#·json动态创建对象
Charles_go9 小时前
C#中级、double和decimal有什么区别
开发语言·c#
思成不止于此9 小时前
深入理解 C++ 多态:从概念到实现的完整解析
开发语言·c++·笔记·学习·多态·c++40周年
布丁写代码11 小时前
GESP C++ 一级 2025年09月真题解析
开发语言·c++·程序人生·学习方法
喵个咪12 小时前
Qt 优雅实现线程安全单例模式(模板化 + 自动清理)
c++·后端·qt
欧阳x天13 小时前
C++入门(一)
c++
小张成长计划..13 小时前
【C++】:priority_queue的理解,使用和模拟实现
c++