[发明专利]函数调用方法和装置有效
申请号: | 200910189035.3 | 申请日: | 2009-12-17 |
公开(公告)号: | CN101714075A | 公开(公告)日: | 2010-05-26 |
发明(设计)人: | 姚育平 | 申请(专利权)人: | 深圳市万兴软件有限公司 |
主分类号: | G06F9/305 | 分类号: | G06F9/305;G06F9/445 |
代理公司: | 深圳市顺天达专利商标代理有限公司 44217 | 代理人: | 郭伟刚 |
地址: | 518057 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 函数 调用 方法 装置 | ||
技术领域
本发明涉及函数调用技术,更具体地说,涉及一种函数调用方法和装置。
背景技术
动态链接库是从C语言函数库和Pascal库单元的概念发展而来,是作为 共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于 其可执行代码的函数。函数的可执行代码位于一个DLL(Dynamic Link Library,动态链接库)中,该DLL包含一个或多个已被编译、链接并与使用 它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序 可同时访问内存中单个DLL副本的内容。可以把动态链接库理解为一个函数 库,该函数库包含了全局数据、编译过的函数和资源。动态链接库不能像普通 的可执行文件那样直接运行,而是用来为其他的exe文件(可执行文件)或 DLL文件提供共享函数库。DLL经过编译后,被装入到一个预定的基地址 中,如果没有与其他DLL冲突,文件就被映射到进程中相同的虚地址上。与 静态库不同的是,它不能直接链接到可执行文件中,而是在程序运行时才加载。 多个应用程序可以共享内存中的动态链接库,这样就大大节省了内存的开支, 并且可以有效地减少可执行文件的大小。
动态链接库一般包括.lib(导出函数),.h,.DLL文件。动态链接库有如下 两种使用方法:
a.隐式链接,同使用静态库相似,分为三步:引用.lib,包含头文件,使 用导出函数;
b.动态加载,直接使用LoadLibrary加载所需的动态库,然后指定所需 的导出函数。
上述方法只能调用DLL中导出的函数。如果DLL中有一些函数已经实现 了我们所要的功能,但却无法单独导出,则我们将无法单独使用这些函数。
因此,需要一种技术方案,能够实现对DLL中非导出函数的调用。
发明内容
本发明要解决的技术问题在于,针对现有技术无法调用DLL中的非导出 函数的缺陷,提供一种函数调用方法和装置。
本发明解决其技术问题所采用的技术方案是:
构造一种函数调用方法,用于调用动态链接库中的非导出函数,包括:
加载步骤,包括在内存中加载所述动态链接库并确定该动态链接库在内存 中的基地址;
调用步骤,包括基于所述非导出函数在所述动态链接库中的相对地址和所 述基地址确定非导出函数在内存中的真实地址,并依据该真实地址调用该非导 出函数。
在本发明提供的函数调用方法中,所述基于所述非导出函数在所述动态链 接库中的相对地址和所述基地址确定非导出函数在内存中的真实地址进一步 包括,依据下列公式确定所述真实地址:
真实地址=相对地址+基地址
本发明还提供了一种函数调用装置,用于调用动态链接库中的非导出函 数,包括:
加载模块,用于在内存中加载所述动态链接库并确定该动态链接库在内存 中的基地址;
调用模块,用于基于所述非导出函数在所述动态链接库中的相对地址和所 述基地址确定非导出函数在内存中的真实地址,并依据该真实地址调用该非导 出函数。
在本发明提供的函数调用装置中,在基于所述非导出函数在所述动态链接 库中的相对地址和所述基地址确定非导出函数在内存中的真实地址时,所述调 用模块依据下列公式确定所述真实地址:
真实地址=相对地址+基地址
本发明还提供了一种函数调用方法,用于调用动态链接库中非导出类中的 成员函数,包括:
加载步骤,包括在内存中加载所述动态链接库并确定该动态链接库在内存 中的基地址;
调用步骤,包括基于所述成员函数在所述动态链接库中的相对地址和所述 基地址确定成员函数在内存中的真实地址,并依据该真实地址调用该成员函 数。
在本发明提供的函数调用方法中,所述基于所述成员函数在所述动态链接 库中的相对地址和所述基地址确定非导出函数在内存中的真实地址进一步包 括,依据下列公式确定所述真实地址:
真实地址=相对地址+基地址
本发明还提供了一种函数调用装置,用于调用动态链接库中非导出类中的 成员函数,包括:
加载模块,用于在内存中加载所述动态链接库并确定该动态链接库在内存 中的基地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市万兴软件有限公司,未经深圳市万兴软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910189035.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:旋转式剃须刀刀头装置
- 下一篇:一种超大型混流式水轮机叶片防变形的铸造方法