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();
}

总结

据说使用动态链接库方式修改应用类,减少大的改动吧

经验分享 程序员 微信小程序 职场和发展