1.生成dll

然后选择创建共享库:

创建好后,修改pro文件,改为下面两句(这样就可以创建界面了):

 然后修改sharedlib.h:

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

最后修改sharedlib.cpp,添加:

 QMessageBox::information(nullptr,"QMessageBox","My shared Lib Test");

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

最后点击锤子,生成DLL:

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

而主程序需要用到的有:

dll文件、h头文件

2.主程序调用dll

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

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

然后将sharedlib.h头文件拖到include中.将sharedLib.dll文件拖到lib中.

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

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

-L指定库的目录,而-l是指定库的名字(需要去掉后缀名,如果是lib开头,则需要去掉前缀lib)

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

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帮助,帮我解决了一些问题.

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

  1. 55.Qt-将界面程序封装成静态库

    1.生成dll 然后选择创建静态链接库: 创建的时候,记得勾选QtGui,并且修改pro文件,添加下面1句(这样就可以创建界面了): 修改staticlib.cpp: #include "s ...

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

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

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

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

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

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

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

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

  6. 表格树控件QtTreePropertyBrowser编译成动态库(设计师插件)

    目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidgetIn ...

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

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

  8. faster_rcnn c++版本的 caffe 封装,动态库(2)

    摘要: 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ github上的代码链接,求给星星:) https:// ...

  9. 五,动态库(dll)的封装与使用

    在项目开发中,我们经常会使用到动态库(dll),要么是使用别人的动态库,要么是将功能函数封装为动态库给别人用.那么如何封装和使用动态库呢?以下内容为你讲解. 1.动态库的封装 以vs2010为例,我们 ...

随机推荐

  1. 一位北漂12年IT工程师的年终总结

    Hi,我叫李振良,来自河南周口农村的一个普通家庭,如今来北京已经12年了,我是那种没有大学背景.没有聪明头脑.没有人脉的奋斗青年,但我又是那种不甘于现状,一直想做最好的那个人! 2019年已悄然离去, ...

  2. JVM学习第二天(垃圾回收器和内存分配策略)大章

    说道垃圾回收器大家应该都会有所了解,GC白,当然说道具体的可能就不是很清楚了,今天我们就来玩一玩; GC要做的事情: 第一步:确定堆中需要回收的对象; 第二步:什么时候回收; 第三步:怎样回收 为什么 ...

  3. 用于测试 JsonAnalyzer2 1.01版的测试用例

    14. 原文={"animal":"ca,t","color":"ora:nge","isMale" ...

  4. java 将map转为实体类

    使用反射将map转为对象,如果不使用反射的话需要一个get一个set写起来麻烦,并且不通用,所以写了一个通用的方法将map集合转为对象,直接看代码,注释也都挺清楚的 public static < ...

  5. Linux:基础命令三

    一.软链接 相当于windows中的快捷方式,为了方便用户在使用时更快找到 ln -s /application/appche2.2.0/  /application/appche       注意: ...

  6. Oracle数据库之体系结构

    Oracle数据库管理系统中的3个重要的概念:实例(Instance).数据库(Database)和数据库服务器(Database Server). 实例:是后台进程和内存结构的集合,是Oracle数 ...

  7. pytorch常用函数总结(持续更新)

    pytorch常用函数总结(持续更新) torch.max(input,dim) 求取指定维度上的最大值,,返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引.比如: demo.sha ...

  8. python3和python2语法区别

    1.print python2中是print xxx python3中是print(xxx) 2.抛异常except python2中except Exception,e: print "E ...

  9. mini logger for c++

    水平太菜,最近捣鼓这个 log,折腾了好一会.由于之前都是用 std::cout,不能满足同时输出到屏与文件的目的,故经过一番搜索,在stackoverflow 找到了答案,现总结如下: 头文件 lo ...

  10. 关于java基础语法的学习笔记

    *java语言特点 1,简单易用 2,跨平台 拥有JVM虚拟机(运行程序) 3,面向对象 4,支持多线程*java核心机制 1,java虚拟机 JVM 2,垃圾回收机制*JDK和JRE JDK JRE ...