动态库的创建

动态库的使用


动态库的创建

//SharedLib_global.h
#ifndef SHAREDLIB_GLOBAL_H
#define SHAREDLIB_GLOBAL_H #include <QtCore/qglobal.h> #if defined(SHAREDLIB_LIBRARY)
# define SHAREDLIB_EXPORT Q_DECL_EXPORT
#else
# define SHAREDLIB_EXPORT Q_DECL_IMPORT
#endif #endif // SHAREDLIB_GLOBAL_H
//SharedLib.h
#ifndef SHAREDLIB_H
#define SHAREDLIB_H #include "SharedLib_global.h" class SHAREDLIB_EXPORT SharedLib
{
public:
SharedLib();
}; #endif // SHAREDLIB_H
//SharedLib.cpp
#include "sharedlib.h" SharedLib::SharedLib()
{
}

以上就可以新建一个没有界面的动态库,如果想封装含有UI的动态库,接着看

添加界面类,类名和上面的一模一样,都是SharedLib。

进行覆盖原文件

//原来的SharedLib.cpp
#ifndef SHAREDLIB_H
#define SHAREDLIB_H #include <QWidget> namespace Ui {
class SharedLib;
} class SharedLib : public QWidget
{
Q_OBJECT public:
explicit SharedLib(QWidget *parent = nullptr);
~SharedLib(); private:
Ui::SharedLib *ui;
}; #endif // SHAREDLIB_H

增加库的导进导出

修改UI进行测试

点击小锤子进行编译库,不能点击运行,因为只是单纯库,还不能独立运行。

进入构建目录就可以看到生成的库文件了。

动态库的使用

新建Demo进行测试

选择lib文件

win32: LIBS += -L$$PWD/../build-SharedLib-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug/ -lSharedLib

INCLUDEPATH += $$PWD/../build-SharedLib-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug
DEPENDPATH += $$PWD/../build-SharedLib-Desktop_Qt_5_14_1_MSVC2017_64bit-Debug/debug

把库文件的两个头文件复制在项目目录并添加到项目工程

修改sharedlib.h的头文件,只保留public部分。

//SharedLib.h
#ifndef SHAREDLIB_H
#define SHAREDLIB_H #include <QWidget>
#include "SharedLib_global.h"
class SHAREDLIB_EXPORT SharedLib : public QWidget
{
public:
explicit SharedLib(QWidget *parent = nullptr);
~SharedLib();
}; #endif // SHAREDLIB_H

效果如下:

最新文章

  1. JavaScript常用事件
  2. BZOJ1665 : [Usaco2006 Open]The Climbing Wall 攀岩
  3. C#生成JSON数据
  4. Camel、Pastal、匈牙利标记法
  5. OC中的点语法,成员变量的作用域
  6. linux下用Apache一个IP多个网站多域名配置方法
  7. 03-StreamReader和StreamWriter的案例
  8. MYSQL 磁盘临时表和文件排序
  9. 二、Cocos2dx中Android部分的c++和java实现相互调用(高级篇)
  10. jquery的slideUp、slideDown、slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug
  11. jdk7_ConcurrentHashMap 图示
  12. 服务网关Ocelot 入门Demo系列(01-Ocelot极简单Demo及负载均衡的配置)
  13. json内存级非关系数据库
  14. python Django 文件下载示例
  15. sklearn-标准化标签LabelEncoder
  16. 833. Find And Replace in String
  17. 学习windows编程 day3 之滚动条完善
  18. 007_linux显示一个文件的某几行(中间几行)
  19. CentOS6.5配置MYSQL一主多从详解
  20. [Android] 修图工具Draw9patch使用小结(附ubuntu快捷截图方法)

热门文章

  1. Linux修改主机名hostname
  2. 阿里云ECS部署单机kafka 并对外提供服务(带认证)
  3. sqoop,hive2mysql
  4. windows 设置网卡跳跃点
  5. Docker学习笔记-03 容器数据卷
  6. mmdetection3d安装
  7. 巴恩斯利蕨 The Barnsley Fern
  8. Linux 释放内存及占用较高问题排查
  9. Google在线深度学习神器Colab——科研角色
  10. python中如何获取主机的ip和主机名