动态库的创建

动态库的使用


动态库的创建

//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

效果如下:

Qt之新建界面动态库并使用的更多相关文章

  1. Qt生成和调用动态库dll,和静态库.a(windows和linux通用)

    系统1:ThinkPad T570.Windows10.QT5.12.2(Qt Creater 4.8.2)一.动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为my ...

  2. electron调用c#动态库

    electron调用c#动态库 新建C#动态库 方法要以异步任务的方式,可以直接包装,也可以写成天然异步 代码如下 public class Class1 { public async Task< ...

  3. Qt——动态库的创建和使用

    一.动态库是什么 很多人写程序的人都见过.lib和.dll文件,对动态库也略有耳闻. 生成动态库后可以得到两个文件,后缀名分别是.lib以及.dll. 简而言之,.lib称为导入库,相当于头文件:.d ...

  4. 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

     一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件能够指定父对象 QTimer *timer = QTime ...

  5. Qt编写自定义控件插件开放动态库dll使用(永久免费)

    这套控件陆陆续续完善了四年多,目前共133个控件,除了十几个控件参考网友开源的代码写的,其余全部原创,在发布之初就有打算将动态库开放出来永久免费使用,在控件比较完善的今天抽了半天时间编译了多个qt版本 ...

  6. 【xcode】qt程序不通过qmake,运行找不到动态库的坑

    现象:试图在一个已有项目里增加qt的代码,因此手动加入相关framework(未通过qmake生成工程),编译连接都通过,但是运行时崩溃,提示错误: dyld: Library not loaded ...

  7. Linux Qt动态库的创建和使用

    一.创建动态库 编写一个共享库类,比如: //..base.h class Base : public QObject { Q_OBJECT public: ); void PrintLog(QStr ...

  8. Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具)

    一步步在Window下开发Qt 今天开始安装MySQL,看了些关于MySQL安装的博文,方法大致相同,但是遇到的细节问题各有不同,或者没有讲全面,下面来说说个人的安装过程及遇到的问题. 1.首先下载, ...

  9. Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)

    下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...

  10. Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明

    本文描述的是windows系统下,通过qtcreator在pro文件中添加动态库与静态库的方法: 1.添加动态库(直接添加动态库文件.dll,非子项目) 通过qtcreator创建动态库的方法就不在此 ...

随机推荐

  1. vscode将本地代码实时同步到服务器

    vscode近些年变得越来越流行了,主要是IDEA用上去实在有点卡,机器卡崩溃几次,这段时间也想用vscode体验一下,在自己的一些项目上面,想实现像phpstorm或者goland那样直接把代码通过 ...

  2. C#判断窗体是否打开,并获取聚焦、未打开则新建一个子窗体

    在桌面程序开发会遇到的情况,托盘功能或者是小功能弹窗问题: 现有一个主窗体有子窗体 子窗体每个都可以新建其他窗体问题:新建子窗体时怎么判断子窗体是否打开?若子窗体打开则置顶获取焦点.若未打开则新建一个 ...

  3. 运行Django项目报错

    运行 pip install -r requirements.txt -i https://pypi.douban.com/simple

  4. shell语句记录

    sed篇: 1. 删除指定的字符,比如 'a'-----$ sed 's/a//' file 2. 移除每一行的第一个字符----$ sed 's/^.//' file 3. 移除每一行的最后一个字符 ...

  5. fetch 小分析

    includes\database\prefetch.inc line 385 public function fetchField($index = 0) { return $this->fe ...

  6. IEC104

    IEC10X协议源码 https://github.com/airpig2011/IEC104 一.源码编译 下载源代码并解压 进入文件夹下test目录,对main.c进行修改 我们使用套接字来实现服 ...

  7. 【小记】如果 golang 内存不够了怎么办

    在看 redis 1.0 源码时,总会看到需要申请内存的地方,如果申请不到需要大的内存就会返回 NULL,然后在调用层抛出 oom. 比如 listDup 中在复制特殊 value 或者加入新节点时都 ...

  8. js时间戳转换

    第一个参数传时间戳,第二个连接符可以看你的心情,我喜欢'-' formatDate(value, spe = '/') { value = value * 1000 //10位数时间戳要乘1000 1 ...

  9. 自我察觉 vs 自我意识

    自我察觉,知道并理解自己的意图,能够知晓自己干什么 自我意识,评估并修正自己的意图,能够自主选择干什么

  10. mybatis查询sql时,在不分页的情况下,自动加了limit导致接口报错

    今天在开发过程中,我遇到了很奇怪的问题.自己写的代码明明没有分页进行查询,但是打印出来的sql缺有limit 导致我getone的时候,出现了二个limit,导致接口报错. ### Cause: or ...