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++动态库和静态库的使用方法和区别相关推荐

  1. linux代码动态分析软件,举例分析Linux动态库和静态库

    函数库分为静态库和动态库两种.创建Linux静态库和Linux动态库和使用它们在这里将以举例的形式详述一下.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不 ...

  2. Linux动态库和静态库比较

     Linux动态库和静态库比较文件预览 文件目录树如下,如你所见,非常简单.    1. libtest/    2. |-- lt.c    3. |-- lt.h    4. `-- test.c ...

  3. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  4. Linux中的动态库和静态库(.a/.la/.so/.o)

    为什么80%的码农都做不了架构师?>>>    Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序 ...

  5. 举例分析Linux动态库和静态库

    转自:http://www.xxlinux.com/newxxlinux/development/gui/2012-01-05/499.html 函数库分为静态库和动态库两种.创建Linux静态库和L ...

  6. 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    文章目录 I . CMake 简介 II . Android Studio 中 CMake 引入静态库流程 III . 指定 CMake 最小版本号 IV . 导入函数库 ( 静态库 / 动态库 ) ...

  7. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  8. 动态库和静态库的创建

    库:一组别人实现好的函数接口 1.命名方法  静态库 : libname.a  动态库 : libname.so  注意   :库的名字是name  2.链接动态库和静态库的区别  预处理,编译,汇编 ...

  9. Linux下CMake简明教程(六)动态库和静态库的编译控制

    代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...

  10. 1. CMake 系列 - 从零构建动态库和静态库

    目录 1. 文件目录结构 2. 库文件源代码 3. 编译生成库文件 1. 文件目录结构 首先创建如下目录结构: └── lib├── build # ├── CMakeLists.txt└── src ...

最新文章

  1. 做木匠、开烘焙店、写科幻小说,那些选择转行的开发者们…
  2. go 切换当前运行目录_go调试利器-delve
  3. python 列表多行_Python Pandas list列表数据列拆分成多行的方法实现
  4. 安装中文VS2008 SP1之后 智能提示是英文的解决办法
  5. 患者信息SQL v1
  6. 关于Android Force Close 出现的原因 以及解决方法
  7. WARN HiveConf: HiveConf of name hive.metastore.local does not exist注意事项
  8. mysql字段简索引_MySQL优化看这一篇就够了
  9. 完整的可按年份和月份查询数据并显示
  10. linux环境下软件包的安装
  11. mybatis动态sql传ist集合參与传数组参数
  12. 活动报名 | 前端攻城狮该怎样跳脱“围城”的焦虑
  13. linux虚拟机安装samba服务,在虚拟机Redhat Linux下安装Samba服务器分享
  14. python爬关键词百度指数_Python爬虫爬取百度指数的关键词搜索指数教程
  15. 《程序员修炼之道 - 从小工到专家》吐血解读
  16. 5G物联网网络相关等专有名词解析-持续更新中
  17. linux中的nm命令简介【转】
  18. 影响个人征信的不良习惯有哪些?
  19. android设置UI界面背景,Android ROM定制——界面美化基础(framework-res、SystemUI修改)...
  20. \t\t让米饭更好吃

热门文章

  1. ioncube linux,linux 下ionCube安装
  2. 高仿国美在线 顶部实现
  3. 【NLP基础理论】 08 词汇语义学 Lexical Semantics
  4. 分支定界-附Python代码
  5. 分布式数据库中间件—TDDL的使用介绍
  6. 歌声合成器-Yamaha Vocaloid 5.6.2 x64 WiN
  7. WinRAR去广告:只需六步,教你去除WinRAR的广告
  8. Capture CIS 软件功能介绍
  9. go :Multiple-value strconv.Atoi() (int, error) in single-value context
  10. 利用拉格朗日中值定理求极限