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

相关推荐
天赐学c语言15 分钟前
12.11 - 最长回文子串 && main函数是如何开始的
c++·算法·leetcode
deng-c-f16 分钟前
C/C++内置库函数(4):c++左右值及引用的概念、move/forward的使用
c语言·开发语言·c++
图形学爱好者_Wu30 分钟前
每日一个C++知识点|原子操作
c++·编程语言
特立独行的猫a32 分钟前
C++观察者模式设计及实现:玩转设计模式的发布-订阅机制
c++·观察者模式·设计模式
deng-c-f40 分钟前
C/C++内置库函数(3):future、promise的用法
c语言·开发语言·c++
deng-c-f1 小时前
C/C++内置库函数(6):C++中类什么时候使用静态变量
开发语言·c++
2301_789015621 小时前
C++:模板进阶
c语言·开发语言·汇编·c++
Zhen (Evan) Wang1 小时前
从客户端的HTTP 请求到后端 .NET 8 API的整个生命周期
c#·.net
是小胡嘛1 小时前
仿Muduo高并发服务器之Buffer模块
开发语言·c++·算法
浅陌sss1 小时前
C#中记录一下使用字符串文本调用泛型方法
c#