Kun-Tian / PluginFramework

利用ctk开发一个通用的插件式框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PluginFramework

功能

利用ctk开发一个通用的插件式框架

开发环境

vs2013+Qt5.9.0 目前项目中的大多数程序都是用mingw版的,无奈ctk用mingw编译总是不通过,只好换msvc版本了。庆幸的是msvc的在windows下的性能应该会更好,并且Qt5.9.0以后就不在单独分msvc和mingw版本了,无需再下两个版本了,但是vs2013还是要安装的。

开发日志

2019-05-10 21:15:实现了服务跟踪功能,如果一个插件依赖另外一个插件的话,之前的解决方法是在元数据中添加Require-Plugin,如果依赖关系复杂的话,这种方法就不太好。利用服务追踪的话,如果A服务依赖B服务,当B服务注册,修改或者移除时,追踪服务对象都能够监听到。通过在服务对象中添加回调函数,B服务注册时,A服务便可以做出相应的操作。

2019-05-15 19:27:有好几天没有上传了,不过每天也都在学习ctk,目前完成了如下功能测试:

  • 利用ctkPluginFrameworkLauncher进行简单的插件加载,另外一个好处,程序中的任何一个地方很容易获取插件的上下文
  • 利用ctkEventAdmin进行插件之间的通信,该模块在ctk进行编译的时候需要勾选,该模块也是一个独立的服务,并且需要依赖ctkDictionary进行通信,以前我自己开发的项目中插件的通信都是利用void*指针来传递。目前还没想好ctkDictionary如何存放一个大的数据结构
  • ctkLogService没有试验成功,不知是怎么回事,后期自己准备写一个日志模块
  • 试了ctkWidgets模块中几个部件,特别是ctkPopupWidget还是非常好用的
  • 插件的动态加载和卸载都已经实现了,更新还是不行,但是可以用先卸载再启动的方法进行代替。此外之前卸载插件是可以将插件对应的dll文件进行删除的,不知道后来为什么就不行了

About

利用ctk开发一个通用的插件式框架


Languages

Language:C++ 98.1%Language:CMake 1.6%Language:C 0.2%Language:QMake 0.1%