你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
一种自定义动态链接库的实现(一)
 

摘要:阐述WindowsX86环境下动态链接库的使用方式及基本原理,并以一个自定义的动态链接库,来揭示其内部的秘密。通过这种方式可以深入了解动态链接库及这种自定义的动态链接库生成和使用方法,可为简单嵌入式操作系统支持动态链接库功能提供一种思路。

关键词:动态链接库;原理;自定义

1  引言

    C\C++编程中库文件有两种形式,一种是静态链接库,另一种是动态连接库。静态链接库的二进制代码在程序链接时,与自己写的程序一起集成到目标文件中融为一体。这样做有两个缺点:首先,假如多个程序都使用了同一个静态库,那么库文件代码将重复占用内存,这是操作系统无法检测的;其次,一旦在库文件中发现了BUG,就必须重新编译目标文件,而无法部分替换目标代码。如果采用动态链接库就可以很好地解决上面两个问题,当然还有其他的优点。可是动态链接库是如何工作的并不是那么好理解,文中力图揭示其原理。

2  概述

    动态链接库(DLL)是一种可执行模块,往往以单独的文件形式存在,在Windows下的后缀名一般为.dll。动态链接库有两种使用方法:一个是静态调用,另外一种是动态调用。DLL的静态调用类似于静态库的用法,程序一启动就把DLL中的代码装入内存;这种方法这里不详细介绍。DLL的动态调用稍微麻烦一点,但是它更加灵活,可以更为有效地使用内存。Windows DLL的动态调用需要程序员自己调用如下3个关键API来使用相关功能。

加载动态链接库:

HMODULE LoadLibrary( LPCTSTR lpFileName);

获取相关函数地址:

FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName);

释放动态链接库:

BOOL FreeLibrary( HMODULE hModule);

通过GetProcAddress获取指定函数的指针,就可以使用相应函数了。整个使用过程并不复杂,但想要理解DLL内部的秘密可不那么容易。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089