在Visual Studio中使用C++创建DLL

DLL和LIB的区别

DLL(动态链接库)和LIB(静态链接库),“动态链接”是指Windows程序在运行时才把自己需要存在于某个库中的函数链接进来。“静态链接”是指Windows程序在编译阶段就把各种对象模块(.OBJ)、运行时库(.LIB)和资源文件(.RES)链接到一起以创建一个可执行文件(.EXE)。

(1)DLL(Dynamic Link Library)动态库
DLL是一个包含可由多个程序同时使用的代码和数据的库。例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数。因此,每个程序都可以使用该DLL中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。

(2)LIB(Static Libary)静态库
静态链接库就是我们使用的lib文件,库中的代码最后需要连接到可执行文件中去。静态库中包括了用户程序要用到的各种函数。它在用户程序进行链接时,“静态链接”到可执行程序文件当中。在链 接应用程序时常使用所谓“静态链接”的方法,即将各个目标文件(.obj)、运行时函数库(.lib)以及已编译的资源文件(.res)链接到一起,形成 一个可执行文件(.exe)。使用静态链接时,可执行文件需要使用的各种函数和资源都已包含到文件中。这样做的缺点是对于多个程序都使用的相同函数和资源 要重复链接到exe文件中,使程序变大、占用内存增加。

为什么要使用DLL

代码复用是提高软件开发效率的重要途径。一般而言,只要某部分代码具有通用性,就可以将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架,它们都以源代码的形式发布。由于这种复用是源代码级别的,源代码完全暴露给了程序员,因而称之为“白盒复用”。白盒复用有以下三个缺点:

  1. 暴露源代码,多份拷贝,造成存储浪费;
  2. 容易与程序员的本地代码发生命名冲突;
  3. 更新模块功能比较困难,不利于问题的模块化实现;

为了弥补这些不足,就提出了“二进制级别”的代码复用了。使用二进制级别的代码复用一定程度上隐藏了源代码,对于“黑盒复用”的途径不只DLL一种,静态链接库,甚至更高级的COM组件都是。

使用DLL主要有以下优点:

使用较少的资源;当多个程序使用同一函数库时,DLL可以减少在磁盘和物理内存中加载的代码的重复量。这不仅可以大大影响在前台运行的程序,而且可以大大影响其它在Windows操作系统上运行的程序;
推广模块式体系结构;
简化部署与安装。

在VS2013中创建DLL

参考

[1] http://www.jellythink.com/archives/111
[2]http://blog.sina.com.cn/s/blog_74a459380101kggf.html
[3]http://baike.baidu.com/link?url=NFjPouzZvNEgDZdBeHPGvJhKdKb-kDtyFM_mgXfSFwL4tDnWSLUnLqsDn6TYIsOCwiCJ1BJjFaPsfBkR5wJ23hboAuGUYLZlPMAghgc9AWzFW-tLRoGE78BeDzjmInI09sDEkLbcQKNoWJY7FzITfa
[4]http://www.cnblogs.com/happyliuyi/p/5142674.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值