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

4.1生成方法

实际当中动态链接库的可执行代码存在于.dll文件中,而.dll文件是由编译器直接生成的。在这个方法中不会特地去实现一个编译器来生成.mdll文件,那样的工作量是巨大的而且过程是复杂的。编译器虽然不能直接生成.mdll文件,但是可以得用一些技巧使编译器间接地来生成.mdll文件。

先介绍这个方法的原理。一个函数被编译运行后,其可执行指令便存在于内存中了,而这段可执行指令在内存中的开始地址,是可以通过函数名得到的。因此,只要把某个函数名所指单元开始的一段内存内容写入文件,便得到了一个简单的动态链接库文件。

下面结合实例来解释这个方法。假如要在自定义的动态链接库中实现一个计算n阶乘的递归函数,其函数原型如下:

unsigned int foo(unsigned int iPara);

具体看如下代码:

#include <stdio.h>

unsigned int foo(unsigned int iPara) //导出函数

{

    if(0 == iPara || 1 == iPara) return 1;

    return iPara*foo(iPara-1);

}

//下面的函数用于生成自定义的动态链接库文件

void DLLGenerator(void *pFun, char *pDllName, int iCodeLen)

{

    FILE *fp;

    fp = fopen(pDllName, "wb"); //创建自定义动态链接库文件

    fwrite(pFun, iCodeLen, 1, fp); //将机器码写入文件

    fclose(fp);

}

 

int main()

{  

  推荐精品文章

·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