Qt5.14下生成动态链接库并调用动态链接库笔记
一、目的
一直在调用他人生成或官网的dll动态链接库,咱得自己会生成动态链接库,因此动态链接库生成笔记以此备忘
二、版本
window10+QT5.14+Mingw64-bit
三、创建库项目
1.新建库项目
2.选择qmake
3.选择 QT module默认Core
Qt老版本还需要选择其他的widget和QtgGui模块
4.选择Kits部件
默认MSVC2017 32bit
5.根据所需配置项目MinGW 64-bit
6.选择构建目录
取消Shadow build“√”,生成的dll将在工程目录下
四、创建调用动态库应用工程
1.新建普通应用工程
2.复制上面刚生成的dll、xx.h及xx_global.h到当前工程中
右击项目根目录添加刚复制过来的.h文件添加到项目树中
3.导入到pro文件中
右击项目根目录,选择添加库
4.选择外部库
5.选择复制过来的动态库
可取消为debug版本添加‘d’
6.查看pro文件查看添加
添加完成xx.pro文件会多出如下代码
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../BuildLib/ -lBuildLib else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../BuildLib/ -lBuildLibd INCLUDEPATH += $$PWD/../BuildLib DEPENDPATH += $$PWD/../BuildLib
7.main函数调用动态库
BuildLib l;//动态库类 l.helloWorld();//类方法打印helloworld
8.运行效果
附录
1、动态库BuildLib_global.h
#ifndef BUILDLIB_GLOBAL_H #define BUILDLIB_GLOBAL_H #include <QtCore/qglobal.h> #if defined(BUILDLIB_LIBRARY) # define BUILDLIB_EXPORT Q_DECL_EXPORT #else # define BUILDLIB_EXPORT Q_DECL_IMPORT #endif #endif // BUILDLIB_GLOBAL_H
2、动态库buildlib.h文件
#ifndef BUILDLIB_H #define BUILDLIB_H #include "BuildLib_global.h" #include <QDebug> class BUILDLIB_EXPORT BuildLib { public: BuildLib(); void helloWorld(); }; #endif // BUILDLIB_H
3、动态库类实现文件
#include "buildlib.h" BuildLib::BuildLib() { } void BuildLib::helloWorld() { qDebug()<<"hello world"; }
4、调用工程之主函数文件
#include "widget.h" #include <QApplication> #include "buildlib.h" #include "BuildLib_global.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); //Widget w; //w.show(); BuildLib l; l.helloWorld(); return a.exec(); }
总结
据说使用动态链接库方式修改应用类,减少大的改动吧