1 / 63
文档名称:

最新精品范文-VC++动态链接库(DLL)编程.pdf

格式:pdf   页数:63
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最新精品范文-VC++动态链接库(DLL)编程.pdf

上传人:好文档 2014/12/2 文件大小:0 KB

下载得到文件列表

最新精品范文-VC++动态链接库(DLL)编程.pdf

文档介绍

文档介绍:VC++动态链接库(DLL)编程(一)――理解库
2005-10-20 23:36:00
标签:VC++ 编程 DLL [推送到技术圈]
版权声明: 原创作品, 允许转载, 转载时请务必以超链接形式标明文章原始出处、作者信息和本
声明。否则将追究法律责任。 bao .blo m/109393/120777
VC++动态链接库(DLL)编程(一)
――理解库
作者:宋宝华 e-mail:bao@

先来阐述一下 DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL 看成一种仓
库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库
-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如
果采用静态链接库,则无论你愿不愿意,lib 中的指令都被直接包含在最终生成的 EXE 文件
中了。但是若使用DLL ,该DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动
态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区
别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以
再包含其他的动态或静态链接库。
对动态链接库,我们还需建立如下概念:
(1)DLL 的编制与具体的编程语言及编译器无关
只要遵循约定的 DLL 接口规范和调用方式,用各种语言编写的 DLL 都可以相互调用。
譬如 Windows 提供的系统 DLL(其中包括了 Windows 的 API),在任何开发环境中都能被
调用,不在乎其是 VisualBasic、VisualC++还是 Delphi。
(2)动态链接库随处可见
我们在 Windows 目录下的 system32文件夹中会看到 、 和 ,
windows 的大多数 API 都包含在这些 DLL 中。 中的函数主要处理内存管理和进
程调度; 中的函数主要控制用户界面; 中的函数则负责图形方面的操作。
一般的程序员都用过类似 MessageBox 的函数,其实它就包含在 这个动态链接
库中。由此可见 DLL 对我们来说其实并不陌生。
(3)VC 动态链接库的分类
VisualC++支持三种 DLL,它们分别是 Non-MFC DLL(非 MFC 动态库)、MFC Regular
DLL(MFC 规则 DLL)、MFC Extension DLL(MFC 扩展 DLL)。
非 MFC 动态库不采用 MFC 类库结构,其导出函数为标准的 C 接口,能被非 MFC 或
MFC 编写的应用程序所调用;MFC 规则 DLL 包含一个继承自 CWinApp 的类,但其无消息
循环;MFC 扩展 DLL 采用 MFC 的动态链接版本创建,它只能被用 MFC 类库所编写的应
用程序所调用。
由于本文篇幅较长,内容较多,势必需要先对阅读本文的有关事项进行说明,下面以问
答形式给出。
问:本文主要讲解什么内容?
答:本文详细介绍了 DLL 编程的方方面面,努力学完本文应可以对 DLL 有较全面的掌
握,并能编写大多数 DLL 程序。
问:如何看本文?
答:本文每一个主题的讲解都附带了源代码例程,可以随文下载(每个工程都经
WINRAR 压缩)。所有这些例程都由笔者编写并在VC++ 中调试通过。
当然看懂本文不是读者的最终目的,读者应亲自动手实践才能真正掌握 DLL 的奥妙。
问:学习本文需要什么样的基础知识?
答:如果你掌握了 C,并大致掌握了 C++,了解一点 MFC 的知识,就可以轻松地看懂
本文。

对静态链接库的讲解不是本文的重点,但是在具体讲解 DLL 之前,通过一个静态链接
库的例子可以快速地帮助我们建立“库”的概念。
图1建立一个静态链接库
如图1,在 VC++ new 一个名称为 libTest 的 static library 工程(单击此处下载本工
程),并新建 和 两个文件, 和 的源代码如下:
//文件:
#ifndef LIB_H
#define LIB_H
extern "C" int add(int x,int y); //声明为 C 编译、连接方式的外部函数
#endif
//文件: