GithubHelp home page GithubHelp logo

kun-tian / pluginframework Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yutonghuan/pluginframework

0.0 1.0 0.0 16.89 MB

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

CMake 1.60% C++ 98.14% C 0.21% QMake 0.05%

pluginframework's Introduction

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文件进行删除的,不知道后来为什么就不行了

pluginframework's People

Contributors

yutonghuan avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.