DLL的结构
2016-07-28 14:03
274 查看
1. DLL与数据共享
DLL 可以拥有自己的数据段,但没有自己的堆栈,而是使用应用程序(EXE文件)的堆栈
1.1 DLL的结构
每个DLL文件都包含一个到处函数表,这些导出函数由他们的函数名或函数编号与外界联系起来,函数表中还包含了DLL中函数的地址。当程序加载DLL模块时,应用程序并不知道在DLL中调用函数的实际地址,只知道函数的名字或编号,系统在加载DLL模块时动态建立一个函数与函数地址的对应表,如果重新编译或重建DLL文件,并不需要修改应用程序,除非改变了导出函数的名字或编号。简单的DLL文件只为应用程序提供导出函数,比较复杂的DLL文件除了提供导出函数以外,它本身还调用其他DLL文件中的函数。这样,一个特殊的DLL可以既有引入函数,又有导出函数,这并不会造成任何问题,因为动态链接过程可以处理交叉引用的情况。
1.2 链接方式
![](https://img-blog.csdn.net/20160728140202579?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160728140210876)
![](https://img-blog.csdn.net/20160728140222629)
![](https://img-blog.csdn.net/20160728140229051)
DLL 可以拥有自己的数据段,但没有自己的堆栈,而是使用应用程序(EXE文件)的堆栈
1.1 DLL的结构
每个DLL文件都包含一个到处函数表,这些导出函数由他们的函数名或函数编号与外界联系起来,函数表中还包含了DLL中函数的地址。当程序加载DLL模块时,应用程序并不知道在DLL中调用函数的实际地址,只知道函数的名字或编号,系统在加载DLL模块时动态建立一个函数与函数地址的对应表,如果重新编译或重建DLL文件,并不需要修改应用程序,除非改变了导出函数的名字或编号。简单的DLL文件只为应用程序提供导出函数,比较复杂的DLL文件除了提供导出函数以外,它本身还调用其他DLL文件中的函数。这样,一个特殊的DLL可以既有引入函数,又有导出函数,这并不会造成任何问题,因为动态链接过程可以处理交叉引用的情况。
1.2 链接方式
相关文章推荐
- MySQL查询结果保存到本地
- (原+译)win7远程连接ubuntu16.04
- c#——Winform TreeView 赋值(id,name,pid)类型数据
- 使用Egret开发的HTML5项目,使用本地电脑作为服务器进行移动端调试流程
- Maven项目中使用本地JAR包
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
- ROS by example -第十二章 DYNAMIXEL 伺服系统和 ROS
- 图片防盗链
- 文章标题
- MFC通过txt查找文件并进行复制-备忘
- 综合日语第一册动词复习
- PAT1084
- NKOI 3728 彩虹小马与魔法数列
- 今天开始重新更新(ps:广接各种php相关的外包项目,有意者请留言或者私聊)
- A - Red and Black POJ 1979
- 使用T-Code:ST05 追踪
- 线程、线程句柄、线程ID
- jQuery插件开发详细教程
- 2015最流行的Android组件、工具、框架大全
- 超好的Git学习网站