ctk框架搭建(一) ctk框架插件加载与项目结构

ctk框架搭建(一) ctk框架插件加载与项目结构序 使用CTK框架开发有大半年了,就实际应用上来说框架还比较可靠,但网上资料很少。而刚接触时项目已经有了相当大的体量,与业务等其他逻辑混淆,现在单独把ctk框架部分抽离出来做个总结分享,避免后来的人走弯路。 该系列介绍简单的ctk框架构建的方法,具体架构可根据自身项目设计,开发环境为macOSHighSierra,QtCreator5.10.0。ctk框架插件    CTK源码可以从Gi…

大家好,又见面了,我是你们的朋友全栈君。

 使用CTK框架开发有大半年了,就实际应用上来说框架还比较可靠,但网上资料很少。而刚接触时项目已经有了相当大的体量,与业务等其他逻辑混淆,现在单独把ctk框架部分抽离出来做个总结分享,避免后来的人走弯路。

 该系列介绍简单的ctk框架构建的方法,具体架构可根据自身项目设计,开发环境为macOS High Sierra,QtCreator 5.10.0。

ctk框架插件

     CTK源码可以从GitHub上下载,地址 https://github.com/commontk/CTK,然后使用cmake编译出与系统版本相应的动态库。

等等,cmake是什么?cmake怎么编译?我竟然不知道cmake!!!

……

……

……

于是,我得到了Xcode编译出的libCTKCore.dylib,以及libCTKPluginFramework.dylib(/*此处省略五百字*/)

CTKCore的头文件包括:

GitHub源码/Libs/Core/*.h     Xcode编译目录/ctk-build/Libs/Core/ctkCoreExport.h;

CTKPluginFramework的头文件包括:

GitHub源码/Libs/PluginFramework/*.h     GitHub源码/Libs/PluginFramework/service/*.h,     Xcode编译目录/ctk-build/Libs/PluginFramework/ctkPluginFrameworkExport.h。

取出头文件后,编译出的动态库就可以当普通动态库使用加载了,pro里面加载代码为:

macx: LIBS += -L$$PWD/../libs/ -lCTKCore.0.1.0
macx: LIBS += -L$$PWD/../libs/ -lCTKPluginFramework.0.1.0
INCLUDEPATH += $$PWD/../inclues \
        += $$PWD/../includes/core \
        += $$PWD/../includes/pluginFramework
INCLUDEPATH += $$PWD/../libs
DEPENDPATH += $$PWD/../libs

每个插件都要加载。

项目结构

    由于每一个插件都要建一个子项目,本项目刚开始创建时在QtCreator中选择新建-其他项目-子目录项目,新建项目名称为ctkExample,然后建立主程序入口项目,这里建立一个控制台项目,取名叫console。

更改项目输出路径:console.pro

DESTDIR = $$PWD/../bin

主函数中加载插件,启动框架:main.cpp

#include <QCoreApplication>
#include "ctkPluginFrameworkFactory.h"
#include "ctkPluginFramework.h"
#include "ctkPluginException.h"
#include <QDebug>
int main(int argc, char *argv[])
{
 
 
    QCoreApplication a(argc, argv);
    a.setApplicationName("ctkExample");//给框架创建名称,Linux下没有这步会报错
    ctkPluginFrameworkFactory factory;//插件工厂类
    QSharedPointer<ctkPluginFramework> framework;
    framework = factory.getFramework();
    try{
 
 
        framework->init();
        framework->start();
    }
    catch(const ctkPluginException& e){
 
 
        qDebug() << "framework init fail";
        qDebug() << e.message() << e.getType();
    }
    return a.exec();
}

没有报错的话及表示插件加载成功!

    其中QSharedPointer<ctkPluginFrameworkframework这个对象比较有意思,既可以作为对象也可以作为对象指针,但要作为插件框架使用必须要用指针方法调用,所以代码里使用“->”。

小结

刚开始写技术博客,不知道是啰嗦了还是部分地方没讲清楚,大家将就看,有不懂的地方欢迎留言(如果有人看的话,远目~)

关于刚开始提到的cmake,由于该系列还有几章,再讲cmake容易扯远,如果有必要的话以后单独开一篇讲。

参考文献

cmake编译:http://blog.csdn.net/ji2013/article/details/12370745

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135091.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NFC手机模拟加密门禁卡[通俗易懂]

    NFC手机模拟加密门禁卡[通俗易懂]CSDN仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn查看、评论。本博文对应地址:https://hceng.cn/2019/07/12/NFC手机模拟加密门禁卡/#more记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。0.缘起之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。后来,小区门禁系统换了…

    2022年5月1日
    933
  • .Net 接入CAS 遇到的坑

    .Net 接入CAS 遇到的坑

    2021年7月2日
    106
  • 软件测试方法中黑盒测试法主要用于测试_黑盒测试一般由谁完成

    软件测试方法中黑盒测试法主要用于测试_黑盒测试一般由谁完成黑盒(又叫功能测试、数据驱动测试):1.黑盒测试发现错误类型:功能错误和遗漏界面错误数据库错误性能错误初始化和终止错误2.黑盒测试:程序外部接口进行的3.黑盒测试就是根据功能需求来设计测试用例,验证软件是否按照预期要求工作。4.黑盒测试技术主要有等价类划分法、边界值法、判定表法、因果图法、场景法等。5.等价类划分法测试技术是依据软件系统输入集合、输出集合或操作集合实现功能的相同性为依据,对其进行的…

    2022年10月3日
    2
  • 电脑翻页时钟屏保怎么设置_电脑桌面显示大屏时钟

    电脑翻页时钟屏保怎么设置_电脑桌面显示大屏时钟2019独角兽企业重金招聘Python工程师标准>>>…

    2022年9月29日
    2
  • java 图片加密

    java 图片加密首先,了解下异或操作^,对一个数进行两次异或操作得到原数值。publicclassIOTest{ publicstaticvoidmain(String[]args){ inti=3; System.out.println(i^123);//120 System.out.println(i^123^123);//3 }}将一张图片进…

    2022年6月21日
    32
  • BP神经网络预测(人口)程序(matlab)

    BP神经网络预测(人口)程序(matlab)自己测试人口预测的matlab实现:x=[54167  55196  56300  57482  58796  60266  61465  62828  64653  65994  67207  66207  65859  67295  69172  70499  72538  74542…

    2025年9月14日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号