字体
第(4/5)页
关灯
   存书签 书架管理 返回目录

    的同步问题。通过本章的介绍,读者可以看出,多线程程序设计通常比一般的单线程程序复

    杂,在程序设计过程中,一定要考虑清楚各线程的关系,避免出现死锁或不同步的现象。另

    外需要注意现在大多数用户使用的是单CPU 计算机,在这种机器上运行多线程程序,有时反

    而会降低系统的xìng能。因此,在设计多线程应用程序时,应慎重选择,视具体情况加以处理,

    使应用程序获得最佳的xìng能。

    枫叶文学网www.fywxw.com

    第10 章 动态链接库

    动态链接库(Dynamic Link Library)是一个可执行模块,其包含的函数可以由Windows

    应用程序调用以执行一些功能,主要为应用程序模块提供服务。本章将全面、系统地阐述在

    Visual C++平台下进行Win32 动态链接库的设计和应用。主要包括下面几个方面的内容。

    ? 动态链接库(DLL)的基本知识。

    ? DLL 的出入口函数。

    ? 调用DLL 中的两种方式。

    ? 开发DLL 的方式。

    ? DLL 中资源的利用。

    ? 钩子(Hook)函数的应用方法。

    为了使读者充分理解概念,对于动态链接库的开发,本章使用了“界面汉化”的示例来

    说明资源在动态链接库中的使用。钩子函数对于大多数读者来说可能是一项较为陌生的技术,

    为了加深理解,这里列举了两个关于捕获消息的钩子函数示例,可以帮助读者更好地理解钩

    子函数的原理和使用方法。

    10.1 动态链接库的基础知识

    比较大的应用程序都是由很多模块组成的,这些模块彼此协作,以完成整个软件系统的

    工作。其中可能存在一些模块的功能较为通用,在构造其他软件系统时仍会被使用。在构造

    软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE 文件中,会产生一些

    问题。一是增加了应用程序的大小,这样会占用更多的磁盘空间,程序运行时也会消耗较大

    的内存空间,造成系统资源的浪费;另外,在编写大的EXE 程序时,每次修改重建时都必须

    调整编译所有源代码,不但增加了编译过程的复杂xìng,也不利于阶段xìng的单元测试。

    Windows 系统平台上提供了一种完全不同的有效编程和运行环境,可以将独立的程序模

    块创建为较小的动态链接库(Dynamic Linkable Library)文件,并可对它们单独进行编译和

    测试。在运行时,只有在EXE 程序确实要调用这些DLL 模块的情况下,系统才会将它们装

    载到内存空间中。这种方式不仅减少了EXE 文件的大小和对内存空间的需求,而且使这些

    DLL 模块可以同时被多个应用程序使用,从而充分利用资源。Microsoft Windows 将一些主要

    的系统功能以DLL 模块的形式实现。例如IE 中的一些基本功能就是由DLL 文件实现的,它

    可以被其他应用程序调用和集成。一般来说,下面的这几种情况必须用到动态链接库技术。

    ? 多个应用程序共享代码和数据就是通过共享动态链接库实现的,比如Office 软件的各

    个组成部分有相似的外观和功能。

    ?
上一页 目录 下一页