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

3  工作原理

简单地讲,动态链接库技术是一种在程序需要的时候才将有关代码装入内存的技术。有人往往认为:程序中只能是动态地往内存中读入数据进行处理,而不能把指令从文件中读到内存中来执行。事实上是可以的,因为在X86平台的内存中指令和数据是共存的,换句话说一段内存中的内容可以是指令也可以是数据。在这里可以用这个方法揭示DLL的原理。为了便于理解其中意思看看如下代码:

1  int main()

2  {  /*0x90X86汇编指令nop的机器码,0xc3ret的机器码*/

3     char buf[] = {0x90, 0x90, 0x90, 0x90, 0xc3};

4     typedef void (*PFUNC)();

5     PFUNC pFunc = (PFUNC)( void *)buf;

6     pFunc();  //把内存中的数据当作指令来执行

7     return 0;

8  }  /*P4 CPUWin XP SP2VC6 C++文件形式编译运行通过*/

    上面的程序不做任何有意义的事情,但是可以从中理解上面的话。数组buf的内容既可以当作数据来处理,也可以当作指令来执行。代码中第6行就是把buf中的内容当作指令来执行的。这里是把指令固定写在buf中的,如果是从文件读取的话就实现了一个简单的DLL

4  工作过程

    介绍一种方法去生成自定义的动态链接库并使用它,将自定义的动态链接库文件定义为.mdll文件(My DLL),用此来模拟动态链接库的工作过程,从而使读者更加清晰地了解动态链接库的思想。

  推荐精品文章

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

  联系方式
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