1.生成dll

然后选择创建静态链接库:

创建的时候,记得勾选QtGui,并且修改pro文件,添加下面1句(这样就可以创建界面了):

修改staticlib.cpp:

#include "staticlib.h"
#include <QMessageBox> StaticLib::StaticLib()
{
QMessageBox::information(nullptr,"QMessageBox","My static Lib Test"); }

PS:如果要添加widget界面,可以对着dll项目右击新建,来创建widget界面.

最后点击锤子,生成DLL:

最终build-sharedLib-Desktop_Qt_5_7_1_MinGW_32bit-Debug\debug下生成如下:

而主程序需要用到的有:

.a静态库文件、h头文件

2.主程序调用dll

新建一个userStatic工程,来使用dll:

创建好后,进入工程目录,添加子目录:

然后将staticlib.h头文件拖到include中.将libstaticLib.a文件拖到lib中.

然后修改pro,导入头文件和dll文件.添加:

INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lstaticLib

-L指定库的目录,而-l是指定库的名字(需要去掉后缀名,如果是lib开头,则需要去掉前缀lib,所以libstaticLib.a就变为了staticLib)

如果有多个库文件,则在后面逐步添加,比如:

LIBS += -L F:/QT/QT/media/QTMedia/build-dll-Desktop_Qt_5_7_1_MinGW_32bit-Debug/debug/ -lsharedLib -lsharedLib2 -lsharedLib3 

然后在userShared的main中写入:

#include "widget.h"
#include <QApplication>
#include <sharedlib.h> //声明dll的头文件 int main(int argc, char *argv[])
{
QApplication a(argc, argv); SharedLib(); //打开QMessageBox对话框 return 0;
}

运行后,效果如下:

在此,感谢Tudou_Blog帮助,帮我解决了一些问题.

55.Qt-将界面程序封装成静态库的更多相关文章

  1. 54.Qt-将界面程序封装成动态库DLL

    1.生成dll 然后选择创建共享库: 创建好后,修改pro文件,改为下面两句(这样就可以创建界面了):  然后修改sharedlib.h: #ifndef SHAREDLIB_H #define SH ...

  2. 将QT开发的界面程序封装成DLL,在VC中成功调用

    最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...

  3. 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)

    最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...

  4. 封装ios静态库碰到的一些问题(一)

    封装IOS动态库,碰到的第一个问题,就是资源文件的问题,如果将你的程序封装成为静态库,那么静态库中不会包含资源文件和xib文件,这个时候就需要自己封装bundle文件了,而笔者开发环境默认是xcode ...

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

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

  6. dlib编译成静态库及被其它程序调用

    一.git下载:https://github.com/davisking/dlib 官网:http://dlib.net/ 二.vs中编译成静态库 1.在vs2015中创建静态库工程(vs2015以上 ...

  7. C# 将 WebService 封装成动态库

    C# 将 WebService 封装成动态库 服务与服务之间的远程调用,经常会通过Web Service来实现,Web Service是支持跨语言调用的,可以是java调用c++或c#调用java等, ...

  8. python程序封装成exe流程

    在学习python的过程中,在IDE编写完成py项目,运行成功想要封装成exe,方便分享给不同的人即使别人没有安装python也可以使用. 封装的过程中遇到一些问题,记录一下,方便自己和他人查阅. 以 ...

  9. 【C++】将调用第三方库的代码封装成动态库供上层调用

    需求分析 Java应用中需要调用C++的程序,而这个C++的程序中需要引入一个第三方静态库.所以需要将该程序编译成一个动态库文件(.so)供Java调用. 步骤 使用CLion创建一个动态库的项目,会 ...

随机推荐

  1. 再试Count(*) 与Count(*) 列

    试问,如果有一张表有两个字段,均可为空,插入两条首个字段为空的记录,再插入两条第二字段为空的记录,问count(*)和count(列)结果如何? 答案:count(*)是正常的四条,而count(列) ...

  2. .NET委托,事件和Lambda表达式

    委托 委托是什么? 委托是一种引用类型(其实就是一个类,继承MulticastDelegate特殊的类.),表示对具有特定参数列表和返回类型的方法的引用. 每个委托提供Invoke方法, BeginI ...

  3. oracle之三rman 维护

    rman 维护 11.1 rman 使用和维护 11.2 list 命令一览 1)RMAN> list backup; 2)RMAN> list backup of tablespace ...

  4. Linux 获取屏幕分辨率与窗口行列数(c/c++)

    获取当前分辨率 #include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<s ...

  5. 学习go的一些笔记

    反射 reflect type CfgSt struct{ Match *int64 `ini:"match"` Desc string `ini:"desc" ...

  6. maximo入门---开发者提要

    1.添加控件 在一个程序设计器里添加控件,控件必须要和这个程序对象(这个程序关联的表)的一个属性绑定 ps maximo挺高级的,比如一个date类型的输入框,会自动给他补上时间控件 2.复制程序 复 ...

  7. 10.扩展:Zero Copy

  8. Oracle学习(十)Oracle定时任务

    一.Oracle定时任务基础 简介 oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器. 查询 --当前库中运行的 job SELECT t.* FROM dba ...

  9. DC4靶机

    DC-4靶机渗透 扫描内网机器,看到143是开启的,那么ok了,确定了目标主机的地址. 对其进行进一步的端口扫描,80,22端口都是开放的. 访问具体网页,进行爆破,分别为admin,happy. 里 ...

  10. LDA主题模型困惑度计算

    对于LDA模型,最常用的两个评价方法困惑度(Perplexity).相似度(Corre). 其中困惑度可以理解为对于一篇文章d,所训练出来的模型对文档d属于哪个主题有多不确定,这个不确定成都就是困惑度 ...