【小白入门】创建并使用QT Library(VS 2013)

本文仅梳理总结自己在学习过程中的一些理解和思路,水平有限,理解粗鄙浅薄且不一定正确。文章所有观点均不保证绝对正确,请酌情参考。如果各位朋友发现任何错误请及时告诉我,大家一起讨论共同提高。

动态链接库

写在前面(可以跳过)

本文其实本质上是写给自己的备忘录,如果我不尽可能详尽地记录下操作流程和细节步骤,我不到俩星期就会忘得干干净净。在这里插入图片描述

链接

C代码编译生成可执行程序的过程如下图所示:
图片来自知乎
(图片来自知乎专栏

链接就是把目标文件与一些库文件生成可执行文件的一个过程,它所解决的问题即是将我们自己写的代码和别人写的库集成在一起。

链接,动态链接库和静态链接库

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(Windows下以.lib为后缀,Linux下以.a为后缀)和动态库(Windows下以.dll为后缀,Linux下以.so为后缀,特别的,在Windows下的动态链接也可以用到.lib为后缀的文件,但这里的.lib文件叫做导入库,是由.dll文件生成的)。
在这里插入图片描述
(图片来自博客

静态链接库

在生成可执行文件的时候(链接阶段),把所有需要的函数的二进制代码(静态库)都(通过拷贝的方式)包含到可执行文件中去,这样,在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行。

动态链接库

在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操作系统,操作系统负责将需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库可执行代码,最终达到运行时连接的目的。使用动态链接的多个程序可以共享同一段代码,而不需要在磁盘上存储多个拷贝。不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数。DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件或更改其内容不会对EXE文件造成任何影响。

  • 静态链接发生在编译过程中,形成可执行程序前,而动态链接把链接这个过程推迟到了运行时再进行
  • 静态链接相当于拷贝库文件到工程中,执行速度快
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值