专栏首页Pou光明借助qt creator创建属于自己的共享库

借助qt creator创建属于自己的共享库

简介:

在 Windows 上,共享库由 .dll 表示;在 Linux 上,由 .so 表示。

Shared Library的优势

共享库,又称动态库或so文件,顾名思义,它可以在可执行文件启动时加载或进程运行期被调用。使用共享库有很多好处,例如(包含但不限于下面提到的场景):

1) 减少了依赖共享库的模块的大小,因为它们不必把共享库提供的功能的实现代码静态编译到自己的模块代码中。

2) 在同一台机器上运行的多个进程会在内存中共享同一份动态库,操作系统采用的这种内存布局方式可以极大地节省机器内存资源。

3) 若很多模块依赖了以共享库形式提供的同一个底层库,则底层库升级时,只需升级该so文件即可,无需重新编译应用模块;而若底层库以静态编译形式集成在上层模块内部时,则需要重新

编译每个依赖了该库的模块。

3) 即使某些so库新版本不满足后向兼容也可以升级,某些不支持新版so库的应用程序可以不受影响,继续使用旧版本。

4) 应用程序可以利用so库覆盖某些库,还可以覆盖库中的某些函数(即仍使用某库,但该库中的某些函数被so库的同名函数覆盖)。

由于shared library有其独特的场景应用优势,因此*NIX操作系统的底层库基本都以共享库(*.so)形式提供,其实,windows操作系统底层库也是以共享库(*.dll)形式提供的。

接下来是.h文件的内容:

#ifndef GENERATESHARELIB_H

#define GENERATESHARELIB_H

class GenerateShareLib

{

public:

GenerateShareLib();

int add(int x, int y);

};

#endif // GENERATESHARELIB_H

接下来是.cpp文件的内容:

#include "generatesharelib.h"

GenerateShareLib::GenerateShareLib()

{

}

int GenerateShareLib::add(int x, int y)

{

return x + y;

}

主要是.pro中的内容:

QT -= core gui

TARGET = GenerateShareLib

TEMPLATE = lib

DEFINES += GENERATESHARELIB_LIBRARY

SOURCES += generatesharelib.cpp

HEADERS += generatesharelib.h

unix {

target.path = /usr/lib

INSTALLS += target

}

生成共享库的截图如下:

这次主要和大家分享Linux下借助qt creator如何创建共享库,下次和大家分享在Linux下如何使用共享库。

本文分享自微信公众号 - Pou光明(pou0230)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Qt 线程中使用socket(勘误)

    之前写过两篇关于qt线程中使用socket的文章,昨天有小伙伴看了文章之后和我讨论,然后我发现有一篇文章有问题,今天特地更正一下,误导了之前的小伙伴表示歉意。

    用户5908113
  • 国密算法SM3与SM4简介与应用

    国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。不懂也没关...

    用户5908113
  • Qt Model_View教程之Delegate

    在之前的文章里主要介绍了Qt Model/View 的一些基本用法,接下来结合Delegate做最后的说明。

    用户5908113
  • iKcamp出品|微信小程序|工具安装+目录说明|基于最新版1.0开发者工具初中级教程分享

    第一章:小程序初级入门教程 工具安装 在上一节第 8 步所展示的页面中,可以点击 开发者工具 直接进入到下载页面,也可以直接访问 官网下载地址。然后根据自己的设...

    iKcamp
  • Rainbond Java Maven 多模块源码构建

    Maven 多模块项目是根据 pom.xml 文件(下面简称 pom)来划分的, Rainbond 对它的识别也是建立在 pom 的基础上的. 主要是识别出具体...

    Rainbond开源
  • 给Ocelot做一个Docker 镜像

    写在前面 在微服务架构中,ApiGateway起到了承前启后,不仅可以根据客户端进行分类,也可以根据功能业务进行分类,而且对于服务调用服务也起到了很好的接口作用...

    脑洞的蜂蜜
  • Travis CI 构建 GitBook 实践

    本文只提供思路,具体实现请查看本人博客的其他文章。务必对 Travis CI 基础知识 了解之后再阅读本文。 刚开始在 Travis CI 中从零开始搭建环境,...

    康怀帅
  • Shiny学习(五)||使用R脚本和数据

    建立一个census-app的目录,并在目录下新建data目录存储counties.rds文件,点击下载counties.rds

    生信编程日常
  • 直通BAT专场:百度+阿里+腾讯+网易(题目大合集)!

    13. 在阿里有了解过什么中间件吗?实现原理?与其他开源消息队列有什么特点?消息时延如何

    Java
  • Docker学习笔记1 -- 刚入手docker时的几个命令

    镜像标签可以理解为版本号。比如我们项目demo的版本是1.5.1,那么标签可以是:

    Ryan-Miao

扫码关注云+社区

领取腾讯云代金券