C++动态库和静态库的使用方法和区别
1.简要介绍
①C++中代码有以下三种分发方式:
源码:在工程中需包含引用工程的源文件(.cpp)和头文件(.h),这种方法会导致工程较为庞大。
动态库:只需包含引用工程的dll文件即可,引用工程的头文件和lib库文件可选,通常都会带上。
静态库:只需包含引用工程编译生成的lib文件和头文件,工程看起来较为清爽简洁。
②动态库和静态库的区别
两者各有优缺点,区别如下图:
静态库:当存在a.exe,b.exe和c.exe这三个应用程序模块中都需使用同一个lib库时,会在内存中有多份重复的代码,导致链接时间较长。
动态库:当存在a.exe,b.exe和c.exe这三个应用程序模块中都需使用同一个lib库时,在内存中仅有一份重复的代码。
③执行程序的过程:
常见使用问题:
error C3861:“Add”:找不到标识符,通常是未包含引用函数存在的头文件。
error LNK2019:无法解析的外部符号,通常是引用的静态库lib文件存在问题。
由于找不到DLL.dll文件,通常是当前工程找不到引用工程的动态库dll文件,通常会把引用的dll文件拷贝到当前工程目录下。
2.如何使用两种库
①静态库有两种方法:
a.在工程中包含引用工程的头文件和库文件(不推荐使用,不够整洁)
#include "D:\\chenwenxin\\chaofei.h"
#pragma comment(lib,"D:\\chenwenxin\\chaofei.lib")
b.选择项目名->右击属性->分别在C++和链接器中加入include目录和lib目录,再在链接器的输入项中增加lib文件。(推荐)
②动态库的使用:
同①中的b方法,再将引用工程的dll文件拷贝到当前工程的目录下。
C++动态库和静态库的使用方法和区别相关推荐
- linux代码动态分析软件,举例分析Linux动态库和静态库
函数库分为静态库和动态库两种.创建Linux静态库和Linux动态库和使用它们在这里将以举例的形式详述一下.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不 ...
- Linux动态库和静态库比较
Linux动态库和静态库比较文件预览 文件目录树如下,如你所见,非常简单. 1. libtest/ 2. |-- lt.c 3. |-- lt.h 4. `-- test.c ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- Linux中的动态库和静态库(.a/.la/.so/.o)
为什么80%的码农都做不了架构师?>>> Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序 ...
- 举例分析Linux动态库和静态库
转自:http://www.xxlinux.com/newxxlinux/development/gui/2012-01-05/499.html 函数库分为静态库和动态库两种.创建Linux静态库和L ...
- 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
文章目录 I . CMake 简介 II . Android Studio 中 CMake 引入静态库流程 III . 指定 CMake 最小版本号 IV . 导入函数库 ( 静态库 / 动态库 ) ...
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- 动态库和静态库的创建
库:一组别人实现好的函数接口 1.命名方法 静态库 : libname.a 动态库 : libname.so 注意 :库的名字是name 2.链接动态库和静态库的区别 预处理,编译,汇编 ...
- Linux下CMake简明教程(六)动态库和静态库的编译控制
代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...
- 1. CMake 系列 - 从零构建动态库和静态库
目录 1. 文件目录结构 2. 库文件源代码 3. 编译生成库文件 1. 文件目录结构 首先创建如下目录结构: └── lib├── build # ├── CMakeLists.txt└── src ...
最新文章
- 做木匠、开烘焙店、写科幻小说,那些选择转行的开发者们…
- go 切换当前运行目录_go调试利器-delve
- python 列表多行_Python Pandas list列表数据列拆分成多行的方法实现
- 安装中文VS2008 SP1之后 智能提示是英文的解决办法
- 患者信息SQL v1
- 关于Android Force Close 出现的原因 以及解决方法
- WARN HiveConf: HiveConf of name hive.metastore.local does not exist注意事项
- mysql字段简索引_MySQL优化看这一篇就够了
- 完整的可按年份和月份查询数据并显示
- linux环境下软件包的安装
- mybatis动态sql传ist集合參与传数组参数
- 活动报名 | 前端攻城狮该怎样跳脱“围城”的焦虑
- linux虚拟机安装samba服务,在虚拟机Redhat Linux下安装Samba服务器分享
- python爬关键词百度指数_Python爬虫爬取百度指数的关键词搜索指数教程
- 《程序员修炼之道 - 从小工到专家》吐血解读
- 5G物联网网络相关等专有名词解析-持续更新中
- linux中的nm命令简介【转】
- 影响个人征信的不良习惯有哪些?
- android设置UI界面背景,Android ROM定制——界面美化基础(framework-res、SystemUI修改)...
- \t\t让米饭更好吃
热门文章
- ioncube linux,linux 下ionCube安装
- 高仿国美在线 顶部实现
- 【NLP基础理论】 08 词汇语义学 Lexical Semantics
- 分支定界-附Python代码
- 分布式数据库中间件—TDDL的使用介绍
- 歌声合成器-Yamaha Vocaloid 5.6.2 x64 WiN
- WinRAR去广告:只需六步,教你去除WinRAR的广告
- Capture CIS 软件功能介绍
- go :Multiple-value strconv.Atoi() (int, error) in single-value context
- 利用拉格朗日中值定理求极限