[发明专利]一种用于加载动态链接库的代码自动生成方法及装置有效

专利信息
申请号: 201410567835.5 申请日: 2014-10-22
公开(公告)号: CN104317589B 公开(公告)日: 2017-08-25
发明(设计)人: 邱田华;宋斌;刘毅;吴波;方鹏;郑艳梅;谭旭 申请(专利权)人: 中国电子科技集团公司第四十一研究所
主分类号: G06F9/44 分类号: G06F9/44
代理公司: 北京天奇智新知识产权代理有限公司11340 代理人: 陈永宁
地址: 266555 山东省*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 用于 加载 动态 链接 代码 自动 生成 方法 装置
【说明书】:

技术领域

发明属于代码自动生成技术领域,尤其涉及的是一种用于加载动态链接库的代码自动生成方法及装置。

背景技术

加载DLL分为静态加载和动态加载两种方式。静态加载方式包含三种静态加载方法:

(1)手动编写加载DLL代码,不同语言采用的步骤也不一样:在C语言下添加对LIB文件的引用,并重新定义需要调用的函数和常量,函数和常量的定义和DLL对应的头文件中的定义类似,只是参数类型改为当前编程语言下的类型;在C#语言下,创建一个类,在类中声明和头文件中函数对应的定义;

(2)在美国国家仪器公司的LabWindows CVI下,装载DLL对应的FP文件实现自动加载;

(3)在微软公司的Microsoft Visual Studio集成开发环境中,添加美国国家仪器公司的Measurement Studio下的仪器驱动向导文件模板,选择DLL对应的FP文件,把FP文件中的函数定义和常量定义都自动生成加载代码。

动态加载DLL方法对应于不同的目标语言,具有不同的加载步骤。对应同一种编程语言下,加载步骤通常是一定的。例如对应于C语言下的加载步骤有:

创建一个函数声明,其参数数据类型要与调用的DLL头文件定义的函数原型相吻合;

通过Win32 API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄;

通过Win32 API函数GetProcAddress()获取要调用的DLL的函数地址,把结果赋给自定义函数的指针类型;

使用函数声明来调用DLL中的函数;

最后调用完成后,通过Win32 API函数FreeLibrary()释放DLL函数。

在C#语言下的加载步骤有:

定义一个委托声明,其参数数据类型要与调用的DLL头文件定义的函数原型相吻合;

创建委托声明的委托变量;

通过Win32 API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄;

通过Win32 API函数GetProcAddress()获取要调用的DLL的函数地址,把结果赋给委托变量;

使用委托来调用DLL中的函数;

最后调用完成后,通过Win32 API函数FreeLibrary()释放DLL函数。

综上所述,编写加载DLL的代码的过程,核心的工作是得到DLL内部的函数定义和常量定义列表;然后把函数和常量定义中的参数类型转换为目标编程语言下的参数类型;最后根据编程语言和加载方式,确定加载步骤,编写或生成加载代码。

目前的加载DLL的方法通常采用手动编码实现和利用第三方软件工具自动加载实现。

对应于采用手动编码实现DLL加载的方法,首先需要对目标编程语言下的加载DLL的静态、动态两种方式步骤有所了解,并熟悉不同编程语言的参数类型间的转换,提高了软件人员的专业要求;当DLL有更新时,需要软件人员手动的修改加载代码;当需要在新的语言下加载动态连接库时,需要软件人员重新编写加载代码实现。综上所述,手动编写加载DLL代码的方式,增加了软件人员的专业要求和工作量,造成人力资源的巨大浪费,降低软件人员的开发效率。

对应于利用第三方软件工具自动实现DLL加载的两种方法,都依赖于CVI生成的FP文件,并且都只能静态方式加载DLL。对应第一种方法,只支持CVI下对CVI编写的DLL的加载。第二种方法虽然支持多种目标语言对DLL的封装,但是依赖于Microsoft Visual Studio,并且只能生成Microsoft Visual Studio所支持编程语言的加载代码;并且自动生成代码的过程有一部分的局限性,每次都是把FP文件中的所有函数和常量都进行封装,不支持选择需要封装函数与常量的列表。

因此,现有技术存在缺陷,需要改进。

发明内容

本发明所要解决的技术问题是针对现有技术的不足,提供一种用于加载动态链接库的代码自动生成方法及装置。

本发明的技术方案如下:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电子科技集团公司第四十一研究所,未经中国电子科技集团公司第四十一研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410567835.5/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top