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

相关推荐
REDcker8 分钟前
AIGCJson 库解析行为与异常处理指南
c++·json·aigc·c
寻星探路12 分钟前
【Python 全栈测开之路】Python 基础语法精讲(一):常量、变量与运算符
java·开发语言·c++·python·http·ai·c#
朔北之忘 Clancy17 分钟前
2020 年 6 月青少年软编等考 C 语言一级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解
御承扬22 分钟前
鸿蒙原生系列之动画效果(帧动画)
c++·harmonyos·动画效果·ndk ui·鸿蒙原生
故事不长丨1 小时前
深度解析C#文件系统I/O操作:File类与FileInfo类的核心用法与场景对比
c#·文件系统·file·fileinfo·i/o操作·i/o流
星马梦缘1 小时前
算法与数据结构
数据结构·c++·算法·动态规划·克鲁斯卡尔·kahn
你的冰西瓜1 小时前
C++中的array容器详解
开发语言·c++·stl
Ccjf酷儿2 小时前
C++语言程序设计 (郑莉)第六章 数组、指针和字符串
开发语言·c++
陌路202 小时前
C++28 STL容器--array
开发语言·c++
im_AMBER2 小时前
Leetcode 100 在链表中插入最大公约数
数据结构·c++·笔记·学习·算法·leetcode·链表