当前位置: 首页 > news >正文

网站服务器维护技术WordPress干什么的

网站服务器维护技术,WordPress干什么的,怎样自己建个人网站,如何开通微信公众号写在前面 Qt–动态链接库一文中提到#xff0c;动态方式加载dll只能加载 extern C“ 的导出函数#xff0c;而无法加载类#xff0c;因此可以使用Qt提供的插件来实现导出类的动态加载。 QPlugin是Qt插件框架的一部分#xff0c;是一种轻量级的插件系统#xff0c;…写在前面 Qt–动态链接库一文中提到动态方式加载dll只能加载 extern C“ 的导出函数而无法加载类因此可以使用Qt提供的插件来实现导出类的动态加载。 QPlugin是Qt插件框架的一部分是一种轻量级的插件系统用于在QT应用程序中动态加载和卸载功能模块QPluginLoader类提供了对Qt插件的访问。 开发环境 Qt5.15.2 Qt Creator10.0.2 自定义插件步骤 自定义插件时要先创建一个接口作为插件类的基类。因为插件存储在一个dll中因此可以动态的加载。 创建一个插件包含以下几步 ①定义一个接口类只有纯虚函数的抽象类 ②使用Q_DECLARE_INTERFACE()宏在Qt的元对象系统中注册该接口 ③再定义一个插件类必须继承自QObject类和上面创建的接口类且需先继承QObject ④在插件类中使用Q_INTERFACE()宏在Qt的元对象系统中注册该接口 ⑤使用Q_PLUGIN_METADATa()宏导出该插件 ⑥使用合适的.pro文件构建该插件 这里和之前的dll的创建和使用一样同样以两个项目进行一个插件项目一个使用插件项目。 创建插件 打开Qt Creator新建空项目Empty qmake Project。 命名为MyPlugin 套件配置 新建一个MyPluginInterface 接口类 在MyPluginInterface.h中添加以下内容 //myplugininterface.h #ifndef MYPLUGININTERFACE_H #define MYPLUGININTERFACE_H#define MYPLUGININTERFACE_IID org.examples.myplugin.interface”class MyPluginInterface { public:virtual ~MyPluginInterface() {} //这里需内敛实现virtual void printFromPlugin() 0; //声明为纯虚函数};Q_DECLARE_INTERFACE(MyPluginInterface, MYPLUGININTERFACE_IID)#endif // MYPLUGININTERFACE_H再创建插件类继承自QObject 添加对QMyPluginInterface的继承元对象的接口注册和导出 //myplugin.h #ifndef MYPLUGIN_H #define MYPLUGIN_H#include QObject #include MyPluginInterface.hclass MyPlugin : public QObject, MyPluginInterface {Q_OBJECTQ_PLUGIN_METADATA(IID MYPLUGININTERFACE_IID)Q_INTERFACES(MyPluginInterface)public:explicit MyPlugin(QObject *parent nullptr);void printFromPlugin(); //实现继承自基类的纯虚函数signals:};#endif // MYPLUGIN_H //myplugin.cpp #include myplugin.h #include QDebugMyPlugin::MyPlugin(QObject *parent): QObject{parent} {}void MyPlugin::printFromPlugin() {qDebug() Print From Plugin; } 最后修改.pro文件构建项目 //MyPlugin.pro TEMPLATE lib #表明该项目要构建库 CONFIG plugin #告知qmake要创建一个插件HEADERS \MyPluginInterface.h \myplugin.hSOURCES \myplugin.cpp 构建会提示MyPluginInterface.h中有错误D:\QtApplication\MyPlugin\MyPlugin\MyPluginInterface.h:15: error: Parameter type ‘MyPluginInterface’ is an abstract class 这里将MyPluginInterface.h从项目中移除注意不要删除 再重新构建生成即可 可以在输出目录下看到dll: 然后提供 ①MyPluginInterface.h ②MyPlugin.dll 给其他项目使用即可。 使用插件 这里新建一个Qt控制台应用程序来加载上面的插件并使用 构建套件 将MyPluginInterface.h拷贝到MyPluginTest.pro目录的include文件夹中将MyPlugin.dll放到MyPluginTest项目的输出目录下 在MyPluginTest.pro中添加包含目录 在main.cpp中加载使用MyPlugin //main.cpp #include QCoreApplication#include QDebug #include QPluginLoader #include MyPluginInterface.hint main(int argc, char *argv[]) {QCoreApplication a(argc, argv);//QPluginLoader loader(D:/QtApplication/MyPluginTest/build-MyPluginTest-Desktop_Qt_5_15_2_MSVC2019_64bit-Release/MyPlugin.dll);QPluginLoader loader(../MyPlugin.dll);QObject* instance loader.instance();if (instance){MyPluginInterface* plugin qobject_castMyPluginInterface*(instance);if (plugin){plugin-printFromPlugin();}}else{qDebug() Instance is null;return 0;}return a.exec(); } 输出结果如下 总结 使用QPluginLoader可动态加载dll通过QPluginLoader::instance()得到插件接口类的实例再通过多态调用对应插件类的接口实现以此来弥补QLibrary不能动态加载使用导出类的缺陷。 后续扩展其他插件时需添加抽象的插件接口类(MyPluginInterface)及其对应的插件类(MyPlugin)实现。
http://www.hkea.cn/news/14366433/

相关文章:

  • php完整电商网站开发源码网站建设需要的职位
  • 易语言编程可以做网站么阿里+wordpress
  • 营销型网站建设申请域名时公司类型的域名后缀一般是网站 建设网站
  • 上海好的高端网站建北京十大教育培训机构排名
  • 网站建设与网页设计可行性分析报告梅县区住房和城乡规划建设局网站
  • 建立网站定制招聘网页制作软件
  • 建设茶网站目的wordpress如何配置文件
  • flash网站开发教程跨境电商营销
  • 网站开发 验收周期美容美发网站源码
  • 个人备案网站百度收录网站建设需准备什么
  • 哪一个网站做专栏作家好点wordpress熊掌号关注
  • qq小程序权限设置国内好的seo
  • 镇江论坛网站建设郑州网站建设价位
  • 如何做关于橱柜网站东莞建网站的公司
  • 封装系统如何做自己的网站大尺寸图网站
  • 在线销售型网站小程序注册推广
  • 做网站优化选阿里巴巴还是百度建行贵金属
  • 苏州网站建设自学公司加盟代理
  • 怎么仿制别人的网站公司网站建设代理
  • 为什么我网站打不开增城电子商务网站建设
  • 番禺建设网站公司网站建设的趋势
  • 临海网站开发公司官网网页制作
  • 团购网站营销方案亚马逊备案网站建设
  • 襄阳网站设计制作公司天津市建设执业资格注册中心网站
  • 网站建设音乐代码哪些是asp网站
  • 网页设计素材网站集怎么做网站优化排名到前面
  • 做机器设备的网站广州网站制作哪家全面
  • 龙岩市建设部网站养育成本
  • 庆阳网站设计 贝壳下拉医院网站站群建设方案
  • 为什么要做网站首页设计广州市建设企业网站平台