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

//下面是真正使用自定义动态链接库的代码,与使用WindowsDLL很像。

typedef unsigned int (*PFOO)(unsigned int iPara);

int main()

{   //要注意要正确放置MyDll.mdll,最好和这个测试程序在同一个目录下。

    MYHANDLE handle = (MYHANDLE)MyLoadLibrary("MyDll.mdll");

PFOO pfoo=( PFOO)MyGetProcAddress(handle, "foo");

printf(“%d! = %d”, 5, pfoo(5)); //计算 5的阶乘

MyFreeLibrary(handle);

return 1;

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

    上面代码模拟了Windows中动态使用DLLAPI。当然Windows中这几个API函数的实现远非这么简单。

5 结语

    通过上面的介绍大家应该可以了解动态链接库的基本原理。上面的模拟代码实现了最简单的动态链接库,如果要在一个.mdll文件中包含多个函数的实现,那就要把多个函数的机器指令写到相同文件中,还要在文件中安排一个索引,记录每个函数在该.mdll文件中的偏移和长度。如果要在Windows中当多个进程使用同一个动态链接库时,要保证内存中只有一份指令,只有借助于映射文件来实现。也可用于简单的嵌入式操作系统中,以实现对动态链接库的支持。当然前提是有外存,而且在内存中数据单元和代码单元是统一编址的。

参考文献

[1]DON BOX. COM本质论[M]. 北京:中国电力出版社,2001.

[2]汪兵,李存斌,陈鹏,等. EVC高级编程及其应用开发[M]. 北京:中国水利水电出版社,2005.

[3] Jeffrey Richter. Windows核心编程[M].北京:机械工业出版社,2007.

[4]张正秋. Windows应用程序捆绑核心编程[M] .北京:清华大学出版社,2006.
  推荐精品文章

·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