一、库的分类
在Windows下库可以分为静态和动态两种。动态库按照链接的时机又可分为两类:
- 隐式链接。使用即加载,有时候又称为静态链接或者加载时动态链接。因为不需要使用函数指针即可使用其中的函数, 编译器帮你默默链接,使用上非常方便;(本文只讲解这一种)
- 显式链接。按需加载,必须使用加载DLL语句和设置DLL函数的指针,有时候称为动态加载或者运行时加载。
与静态链接库的区别在于,静态链接会将所有的对象代码复制到可执行程序中,动态链接则只会在可执行程序中放入含有查找DLL的信息。显然动态链接的可执行程序体积更小,所以除了在生成动态库的时候还需要生成对应的导出符号帮助应用程序在运行时调用动态库符号。
与应用程序相比,DLL程序只能有一个实例,而应用程序可以有多个;应用程序能够作为进程加载,可以管理诸如堆栈、全局内存、文件句柄和消息队列之类的资源,DLL并不能做这些事情。[1]
动态库的优点:
- 节省内存,减少交换。多个进程共享DLL,静态库不能共享;(这就是为什么DLL叫共享库的原因:多个进程共享)
- 节省了磁盘空间和带宽;
- 维护容易。静态库必须重新编译生成exe;
- 新功能方便添加。通过显示链接发现一个DLL方式;
假设我们需要创建一个动态库,其功能有:
- 打印一个apple的
void printApple()
函数 - 一个计算和的方法
int add(int,int)
分别在library.cpp和library.h增加以下内容:
//library.cpp
#include
#include "library.h"
void hello() {
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?