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

DLL中导出的函数

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#动态调用上述函数

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. C#动态调用C++DLL函数

    2023-12-11 00:52:01       38 阅读
  2. MATLABcell函数用法

    2023-12-11 00:52:01       39 阅读
  3. AIGC: 关于ChatGPTFunction Call调用

    2023-12-11 00:52:01       46 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 00:52:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 00:52:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 00:52:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 00:52:01       18 阅读

热门阅读

  1. ts中type和interface类型声明的区别

    2023-12-11 00:52:01       42 阅读
  2. harmonyOS学习笔记之状态修饰器@state,@prop,@link

    2023-12-11 00:52:01       32 阅读
  3. 排列游戏 --- 动态规划 --- 题解

    2023-12-11 00:52:01       38 阅读
  4. Mysql多表查询 思路 ——示例——sql顺序

    2023-12-11 00:52:01       41 阅读
  5. 米贸搜|facebook广告的素材及文案

    2023-12-11 00:52:01       36 阅读