程序更新方法和装置制造方法及图纸

技术编号:36450200 阅读:37 留言:0更新日期:2023-01-25 22:46
本申请提供了一种程序更新方法和装置,该方法包括:向处于运行状态的目标程序内加载目标动态链接库,目标程序的代码为基于C或者C++语言编写的,目标动态链接库包括:至少一个更新函数,更新函数为用于更新目标程序内需要更新的原始函数的函数;确定更新函数对应的原始函数在目标程序内的第一函数地址;确定更新函数在目标动态链接库的第二函数地址;确定目标程序中用于调用原始函数的至少一个调用函数,将调用函数中原始函数的第一函数地址替换为原始函数对应的更新函数的第二函数地址,以完成目标程序的更新。本申请的方案可以使得基于C或者C++语言开发的程序能够在运行状态完成更新,降低了该种程序更新的复杂度。降低了该种程序更新的复杂度。降低了该种程序更新的复杂度。

【技术实现步骤摘要】
程序更新方法和装置


[0001]本申请涉及计算机
,尤其涉及一种程序更新方法和装置。

技术介绍

[0002]热更新是指在程序运行的过程中实现的即时更新。
[0003]通过热更新技术可以实现在不退出应用程序的前提下,完成应用程序的更新,从而提升应用程序的用户使用体验。如,以游戏为例,已开发出的游戏中可能会存在漏洞或者其他需要修复的代码,通过热更新技术可以在无需游戏玩家下线的前提下,完成游戏的更新,从而不会影响到游戏玩家的游戏体验。但是,目前采用C或者C++语言开发的程序日益增多,而由于C或者C++语言的特性,对于采用C或者C++语言开发的程序无法自动完成热更新的,必须需要退出程序之后才可以实现程序的更新,这必然导致了基于C或者C++代码的程序的更新复杂度较高。

技术实现思路

[0004]本申请提供了一种程序更新方法和装置,以使得基于C或者C++语言开发的程序能够在运行状态下完成更新,降低了该种程序更新的复杂度。
[0005]一方面,本申请提供了一种程序更新方法,包括:
[0006]向处于运行状态的目标本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种程序更新方法,其特征在于,包括:向处于运行状态的目标程序内加载目标动态链接库,所述目标程序的代码为基于C或者C++语言编写的,所述目标动态链接库包括:至少一个更新函数,所述更新函数为用于更新所述目标程序内需要更新的原始函数的函数;确定所述更新函数对应的原始函数在所述目标程序内的第一函数地址;确定所述更新函数在所述目标动态链接库的第二函数地址;确定所述目标程序中用于调用所述原始函数的至少一个调用函数,将所述调用函数中所述原始函数的第一函数地址替换为所述原始函数对应的更新函数的第二函数地址,以完成所述目标程序的更新。2.根据权利要求1所述的方法,其特征在于,在所述向处于运行状态的目标程序内加载目标动态链接库之前,还包括:启动目标程序,通过目标程序的编译程序编译所述目标程序,所述编译程序中包括导出子函数;在通过所述编译程序编译所述目标程序的过程中,通过所述导出子函数将所述目标程序中的函数的函数名称和函数地址导出到所述目标程序的第一导出表空间,所述第一导出表空间内的数据可供所述目标程序之外的其他程序访问;所述确定所述更新函数对应的原始函数在所述目标程序内的第一函数地址,包括:基于所述更新函数的函数名称,从所述第一导出表空间查询所述更新函数对应的原始函数在所述目标程序中的第一函数地址。3.根据权利要求1或2所述的方法,其特征在于,所述目标动态链接库的第二导出表空间内存储有所述目标动态链接库内的函数的函数名称以及函数地址;其中,所述第二导出表空间内存储的函数名称和函数地址为编译所述目标动态链接库时,导入到所述第二导出表空间内的;所述第二导出表空间内的数据可供所述目标动态链接库之外的其他程序访问。4.根据权利要求1所述的方法,其特征在于,所述向处于运行状态的目标程序内加载目标动态链接库,包括:调用操作系统中的加载函数,通过所述加载函数向处于运行状态的所述目标程序内加载目标动态链接库。5.根据权利要求4所述的方法,其特征在于,所述目标动态链接库中还包括:用于实现程序热更新的更新执行程序的代码;所述方法还包括:执行所述更新执行程序的代码,以通过所述更新...

【专利技术属性】
技术研发人员:戴鑫孙雨侯健
申请(专利权)人:北京畅游创想软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1