当前位置:网站首页>动态库之间回调函数使用
动态库之间回调函数使用
2022-08-05 08:13:00 【开心大爆炸】
转自: 动态库之间回调函数使用 - 出来打酱油 - 博客园 (cnblogs.com)https://www.cnblogs.com/huyupei/p/8298621.html
在底层dll实现
接口.h文件
typedef interfaceBase* (lpObjCreate)();
class interfaceBase
{
virtual setcallback(callbackBase* callback){};
}
class callbackBase
{
virtual void callback(){};
}
.cpp文件
extern "C" __declspec(dllexport) interfaceBase* CreateObjCreate();
CLibMQTT* CreateObjCreate()
{
return interRealize ::Instance();
}
底层dll实现
class interRealize :public interfaceBase
{
//单例不多写
setcallback(callbackBase* callback){m_callback = callback;};
callbackBase* getcallback(){return m_callback;};
private:
callbackBase* m_callback;
static interRealize * m_instance;
}
上层dll实现
class callbackDeal : public callbackBase
{
void callback(){ int i = 0;};
}
void main
{
HINSTANCE hDllUCLib = LoadLibrary(L".\\lib*.dll");
interfaceBase*pFunc = (interfaceBase*)GetProcAddress(hDllUCLib, "CreateObjCreate");
m_libMQTTBase = pFunc();
m_libMQTTBase ->setcallback(new callbackDeal );//如此callback就是实现callbackDeal 的方法;
}
//这样数据交互就从下层dll转移到上层dll中,MFC的话,在根据回调具体函数 发消息到主窗体;如此将下层代码和上层区分开
}
//该处只是简单描述;并没有贴代码;该功能将单例和多态结合使用,因此将该方法记录下来
//另外在底层dll实现class的 static函数(回调函数)中 可以使用 interRealize ::Instance()->getcallback();来获取上层callbackDeal 的指针,将底层的回调函数的参数带出;
查看: c++ 在类中写回调函数
c++ 在类中写回调函数_BBinChina的博客-CSDN博客_类中回调函数https://blog.csdn.net/BBinChina/article/details/45098183
边栏推荐
猜你喜欢
unity 头发的渲染
Spark cluster deployment (third bullet)
链表专项之环形链表
MySQL database error The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
利用Jenkins的持续集成
JVM运行流程,运行时数据区,类加载,垃圾回收,JMM解析
[Structure internal power practice] Structure memory alignment (1)
Jmeter永久设置中文界面
spark集群部署(第三弹)
TensorFlow安装步骤
随机推荐
监听浏览器刷新操作
XSS靶机通关以及XSS介绍
Win10 设置锁屏壁纸提示尝试其它图片
RedisTemplate: 报错template not initialized; call afterPropertiesSet() before using it
TensorFlow installation steps
双向循环带头链表
MySQL 数据库 报错 The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
[Structural Internal Power Cultivation] Structural Realization Stages (2)
JS语法使用
Nn. Unfold and nn. The fold
软件系统测试和验收测试有什么联系与区别?专业软件测试方案推荐
Chapter 12 贝叶斯网络
D2--FPGA SPI接口通信2022-08-03
国际原子能机构总干事称乌克兰扎波罗热核电站安全形势堪忧
The magic weapon for small entrepreneurs!
【结构体内功修炼】结构体实现位段(二)
How Entrepreneurs Attract Venture Capitalists
Pagoda measurement - building small and medium-sized homestay hotel management source code
Redis缓存以及存在的问题--缓存穿透、缓存雪崩、缓存击穿及解决方法
php fails to write data to mysql