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

DLLGenerator((void *)foo, "MyDll.mdll", 1000);  //代码长度1000是估计值

    return 1;

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

    上面的程序编译并且运行后便会生成MyDll.mdll文件,其内容主要是计算n阶乘函数的机器码。这样自定义的动态链接库文件便生成了。

4.2 自定义使用方法

使用自定义的动态链接库也很简单,首先,将.mdll文件的内容读到一块内存中;其次,用一个恰当类型的函数指针指向这块内存的首地址。接下来就可以通过这个函数指针使用相关函数了。

#include <stdio.h>

#include <stdlib.h>

typedef void* MYHANDLE;

//自定义动态链接库的载入函数

MYHANDLE MyLoadLibrary(char *pDllName)

{

    FILE *fp;      

    fp = fopen(pDllName, "rb");

    fseek(fp, 0, SEEK_END);

    unsigned int lCodeLen  = ftell(fp);//获取文件大小

    void *pFun = malloc(lCodeLen);

    fseek(fp, 0, SEEK_SET);

    fread(pFun, lCodeLen, 1, fp);    //将机器码读入内存

    fclose(fp);

    return pFun;

}

//查找指定函数的地址。由于这里只有一个函数所以很简单。

MYHANDLE MyGetProcAddress(MYHANDLE handle, char *pFunName)

{

    return handle;

}

//释放自定义动态链接库

bool MyFreeLibrary(void *pFun)

{

    free(pFun);

    return true;

}

  推荐精品文章

·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