文章目录

  • 一、目的
  • 二、版本
  • 三、创建库项目
  • 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.新建库项目

java调用qt 的动态库 qt怎么调用动态链接库_开发语言

2.选择qmake

java调用qt 的动态库 qt怎么调用动态链接库_visual studio_02

3.选择 QT module默认Core

Qt老版本还需要选择其他的widget和QtgGui模块

java调用qt 的动态库 qt怎么调用动态链接库_visual studio_03

4.选择Kits部件

默认MSVC2017 32bit

java调用qt 的动态库 qt怎么调用动态链接库_qt_04

5.根据所需配置项目MinGW 64-bit

java调用qt 的动态库 qt怎么调用动态链接库_visual studio_05

6.选择构建目录

取消Shadow build“√”,生成的dll将在工程目录下

四、创建调用动态库应用工程

1.新建普通应用工程

java调用qt 的动态库 qt怎么调用动态链接库_开发语言_06

2.复制上面刚生成的dll、xx.h及xx_global.h到当前工程中

右击项目根目录添加刚复制过来的.h文件添加到项目树中

java调用qt 的动态库 qt怎么调用动态链接库_visual studio_07

3.导入到pro文件中

右击项目根目录,选择添加库

java调用qt 的动态库 qt怎么调用动态链接库_visual studio_08

4.选择外部库

java调用qt 的动态库 qt怎么调用动态链接库_动态库_09

5.选择复制过来的动态库

可取消为debug版本添加‘d’

java调用qt 的动态库 qt怎么调用动态链接库_qt_10

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.运行效果

java调用qt 的动态库 qt怎么调用动态链接库_动态库_11

附录

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

总结

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