Qt之动态库和静态库的创建和使用

动态库(共享库)的创建

在Qt Creator中新建项目,选择Library

创建lib工程
点击“Choose”进入下一步

选择创建库的类型:共享库

选择库类型

选择Kit套件

这里写图片描述

选择需要的模块

这里写图片描述

配置工程路径、名字等

Qt Creator自动创建的文件

我配置的动态库名字为:Share 
这里写图片描述

pro文件内容

QT       -= gui #在选择需要的模块时,我只选用了QtCore,没有使用QtGui
TARGET = Share #我配置的动态库的名字:Share
TEMPLATE = lib #生成库时该字段为lib;生成执行文件时为:app
DEFINES += SHARE_LIBRARY #将SHARE_LIBRARY添加为编译时的预处理器宏,在share_global.h中使用
SOURCES += Share.cpp
HEADERS += Share.h\ #使用动态库时需要这两个头文件
        share_global.h
unix {
    target.path = /usr/lib
    INSTALLS += target
}

share_global.h分析

#ifndef SHARE_GLOBAL_H
#define SHARE_GLOBAL_H

#include <QtCore/qglobal.h>
//使用了pro中DEFINES += SHARE_LIBRARY,选用Q_DECL_EXPORT
//Q_DECL_EXPORT:必须添加到符号声明中(共享库项目) 
//Q_DECL_IMPORT:必须添加到符号声明中(使用共享库的客户项目)
//不知道这两个有什么区别???
#if defined(SHARE_LIBRARY)
#  define SHARESHARED_EXPORT Q_DECL_EXPORT
#else
#  define SHARESHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // SHARE_GLOBAL_H

动态库(共享库)的使用

添加动态库的头文件

我定义的头文件为Share.h、share_global.h,将这两个头文件拷贝到使用库的工程目录中,并添加到工程中

添加库路径

在pro中添加动态库的路径 
LIBS += “E:/…/libshare.a”

部署动态库

因为是动态库,没有编译到可执行文件中,所以需要将动态库,部署到可执行文件的能够使用的库路径中,一般放到可执行文件同目录下。

静态库的创建

在Qt Creator中新建项目,选择Library

创建lib工程
点击“Choose”进入下一步

选择创建库的类型:静态链接库

这里写图片描述

其他步骤与动态库创建相同

Qt Creator自动创建的文件

我创建的静态链接库名字为:Static 
这里写图片描述

pro文件内容

QT       -= gui #在选择需要的模块时,我只选用了QtCore,没有使用QtGui
TARGET = static #我配置的静态库名字:static
TEMPLATE = lib  #生成库时该字段为lib;生成执行文件时为:app
CONFIG += staticlib #编译选项,使用静态库staticlib,默认是动态库
SOURCES += Static.cpp
HEADERS += Static.h #使用静态库时,需要该头文件
unix {
    target.path = /usr/lib
    INSTALLS += target
}

静态库的使用

添加头文件

我定义的头文件为Static.h,将这个头文件拷贝到使用库的工程目录中,并添加到工程中

添加库路径

在pro中添加动态库的路径 
LIBS += “E:/…/libstatic.a”

不用部署

静态库时在编译时,编译进可执行文件中,不需要部署。

转载:https://blog.csdn.net/u010168781/article/details/78549862

猜你喜欢

转载自blog.csdn.net/u014252478/article/details/80432971
今日推荐