文章目录
- 一、目的
- 二、版本
- 三、创建库项目
- 1.新建库项目
- 2.选择qmake
- 3.选择 QT module默认Core
- 4.选择Kits部件
- 5.根据所需配置项目MinGW 64-bit
- 6.选择构建目录
- 四、创建调用动态库应用工程
- 1.新建普通应用工程
- 2.复制上面刚生成的dll、xx.h及xx_global.h到当前工程中
- 3.导入到pro文件中
- 4.选择外部库
- 5.选择复制过来的动态库
- 6.查看pro文件查看添加
- 7.main函数调用动态库
- 8.运行效果
- 附录
- 总结
一、目的
一直在调用他人生成或官网的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();
}
总结
据说使用动态链接库方式修改应用类,减少大的改动吧