一种动态链接库升级方法、电子设备及存储介质与流程

文档序号:34748629发布日期:2023-07-13 00:35阅读:19来源:国知局
一种动态链接库升级方法、电子设备及存储介质与流程

本发明涉及计算机,特别是涉及一种动态链接库升级方法、电子设备及存储介质。


背景技术:

1、在windows系统下的软件开发环境中,最终执行的很多应用程序并不是可独立运行的执行程序,而是被分成许多独立可执行文件,这些文件被称为动态链接库文件,即dll文件。无论是基于整个系统的功能开发,还是独立模块的sdk开发,dll的使用都是必不可少的,它拓展了应用程序的特性,并且可以有助于资源共享,跨平台调用,项目管理等;同时,可以封装一些不想暴露的代码,提升项目的安全性。但是,在对于一个系统或功能包的维护上,经常会更新升级一些依赖的动态链接库dll文件,对于这些dll文件的升级,通常的做法是,在应用程序运行的过程中,获取到dll文件的更新文件后,需要终止应用程序的运行,重启应用程序来完成dll文件的升级。


技术实现思路

1、针对上述技术问题,本发明采用的技术方案为:

2、根据本申请的第一方面,提供了一种动态链接库升级方法,应用于目标程序,目标程序安装于目标设备中,目标设备中存储有目标设备对应的dll文件a集l=(a1,a2,…,am,…,an)和dll文件b;其中,m=1,2,…,n;am为第m个dll文件a,n为dll文件a的数量;l和b存储于第一预设存储空间r1,am中包括至少一个功能函数,dll文件b中包含更新检测函数,以及am中每一功能函数对应的调用函数,且每一调用函数的输入输出参数与其对应的功能函数的输入输出参数相同;

3、该动态链接库升级方法,包括以下步骤:

4、s100,响应于获取到的启动指令,通过预设的加载函数,将dll文件b加载至内存空间r2;若dll文件b加载失败,则终止所述目标程序的启动;若dll文件b加载成功,则执行步骤s200。

5、s200,在dll文件b加载完成后,触发dll文件b的更新检测函数。

6、s300,将l中的各dll文件a加载至内存空间r2。

7、更新检测函数用于执行以下步骤:

8、s210,确定第二预设存储空间r3中是否存在目标文件,若存在,则执行步骤s220;否则,执行步骤s300;r3中存在目标文件表示r3中包含至少一个更新文件,更新文件在l中具有与其对应的dll文件a,且每一更新文件的文件名与其对应的dll文件a的文件名相同。

9、s220,使用每一更新文件对l中与更新文件的文件名相同的dll文件a进行替换,以完成l的更新,并执行步骤s300。

10、根据本申请的另一方面,还提供了一种非瞬时性计算机可读存储介质,存储介质中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现上述动态链接库升级方法。

11、根据本申请的另一方面,还提供了一种电子设备,包括处理器和上述非瞬时性计算机可读存储介质。

12、本发明至少具有以下有益效果:

13、本发明的动态链接库升级方法,在目标程序启动时,将dll文件b加载至内存空间r2,由dll文件b中的更新检测函数控制后续需要加载的dll文件a,而在加载dll文件a之前,首先通过dll文件b中的更新检测函数获取第二预设存储空间r3中存储的更新文件,将原来待更新的dll文件a替换为对应的更新文件,同时删除r3中的更新文件和目标文件;这样,在目标程序每次启动时,都能够实现dll文件的自动更新。

14、而如果r3中不存在更新文件,则说明目标程序此次启动不需要更新,dll文件b则将dll文件a加载至内存空间,由此保证目标程序每次启动时,所加载的dll文件a都是最新版本的文件,从而实现dll文件的自动更新;在用户使用目标程序过程中,即使存在更新文件,也不用刻意的终止目标程序运行,来对dll文件进行更新,用户只需要正常使用目标程序,在目标程序下次启动时,即可完成dll文件的更新。



技术特征:

1.一种动态链接库升级方法,其特征在于,应用于目标程序,所述目标程序安装于目标设备中,所述目标设备中存储有所述目标设备对应的dll文件a集l=(a1,a2,…,am,…,an)和dll文件b;其中,m=1,2,…,n;am为第m个dll文件a,n为dll文件a的数量;l和b存储于第一预设存储空间r1,am中包括至少一个功能函数,所述dll文件b中包含更新检测函数,以及am中每一功能函数对应的调用函数,且每一调用函数的输入输出参数与其对应的功能函数的输入输出参数相同;

2.根据权利要求1所述的动态链接库升级方法,其特征在于,所述更新检测函数还用于执行以下步骤:

3.根据权利要求1所述的动态链接库升级方法,其特征在于,步骤s220包括:

4.根据权利要求1所述的动态链接库升级方法,其特征在于,所述目标程序通过所述dll文件b中的调用函数g调用功能函数g’;其中,g’为与dll文件b对应的dll文件a的功能函数, g的输入输出参数与g’的输入输出参数相同。

5.根据权利要求1所述的动态链接库升级方法,其特征在于,所述目标设备中存储有q个dll文件b,每一个dll文件b都对应一个dll文件a集l’,l’中至少包含一个dll文件a,仅在其中一个dll文件b中包含更新检测函数,且该dll文件b包含与其对应的l’中各dll文件a的功能函数对应的调用函数;其余的各dll文件b只包含与其对应的l’中各dll文件a的功能函数对应的调用函数,且每一调用函数的输入输出参数与其对应的功能函数的输入输出参数相同。

6.根据权利要求1所述的动态链接库升级方法,其特征在于,所述预设的加载函数为loadlibrary函数。

7.根据权利要求1所述的动态链接库升级方法,其特征在于,所述调用函数为getprocaddress函数。

8.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-7中任意一项的所述的动态链接库升级方法。

9.一种电子设备,其特征在于,包括处理器和权利要求8中所述的非瞬时性计算机可读存储介质。


技术总结
本发明提供了一种动态链接库升级方法、电子设备及存储介质,包括:响应于获取到的启动指令,将DLL文件B加载至内存空间R2;若DLL文件B加载成功,在DLL文件B加载完成后;确定R3中是否存在目标文件,若存在,则执行步骤S220;否则,执行步骤S300;R3中存在目标文件表示R3中包含至少一个更新文件,更新文件在L中具有与其对应的DLL文件A,且每一更新文件的文件名与其对应的DLL文件A的文件名相同;使用每一更新文件对L中与更新文件的文件名相同的DLL文件A进行替换,将L中的各DLL文件A加载至内存空间R2;该方法无需重启目标程序即可完成DLL文件的更新。

技术研发人员:申震云,李睿,张家辉,常幸子,侯远哲,闫超
受保护的技术使用者:中航信移动科技有限公司
技术研发日:
技术公布日:2024/1/13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1