CN114089975A - 计算软件的扩展方法、装置、非易失性存储介质及处理器 - Google Patents
计算软件的扩展方法、装置、非易失性存储介质及处理器 Download PDFInfo
- Publication number
- CN114089975A CN114089975A CN202210063639.9A CN202210063639A CN114089975A CN 114089975 A CN114089975 A CN 114089975A CN 202210063639 A CN202210063639 A CN 202210063639A CN 114089975 A CN114089975 A CN 114089975A
- Authority
- CN
- China
- Prior art keywords
- function
- computing software
- target
- library file
- kernel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Abstract
本发明公开了一种计算软件的扩展方法、装置、非易失性存储介质及处理器。其中,该方法包括:接收调用指令,其中,调用指令用于在计算软件中添加目标扩展功能;根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,其中,库文件基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到;在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,其中,计算软件的内核通过调用目标功能函数实现目标扩展功能。本发明解决了计算软件难以便捷地进行功能扩展的技术问题。
Description
技术领域
本发明涉及软件工程领域,具体而言,涉及一种计算软件的扩展方法、装置、非易失性存储介质及处理器。
背景技术
数值计算软件例如MATLAB在使用过程中,经常需要依赖外部的扩展功能模块以实现一些非标准化的计算功能,这是由于数值计算软件的开发者也难以做出所有用户所需要的功能。因此,当合作开发者、社区开发者或者用户需要开发新的功能时,数值计算软件需要为他们提供一些开发的框架。例如,在 MATLAB 中,扩展该软件功能的方式主要依靠官方提供的工具箱(toolbox)。在此基础上,社区开发者大多只能打包一些脚本文件,这种新功能的开发模式不够灵活,也无法实现用户的许多其他类型的需求。因此需要一种新的方法来帮助计算软件进行功能扩展,以使得开发者可以更加灵活进行扩展模块的设计。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种计算软件的扩展方法、装置、非易失性存储介质及处理器,以至少解决计算软件难以便捷地进行功能扩展的技术问题。
根据本发明实施例的一个方面,提供了一种计算软件的扩展方法,包括:接收调用指令,其中,所述调用指令用于在计算软件中添加目标扩展功能;根据所述调用指令,检查与所述目标扩展功能对应的库文件是否满足预定条件,其中,所述库文件基于所述计算软件的内核的头文件和所述计算软件的扩展功能开发标准开发得到;在所述库文件满足预定条件的情况下,识别所述库文件中存储的目标功能函数,并在所述计算软件的内核中存储所述目标扩展功能与所述目标功能函数之间的调用关系,其中,所述计算软件的内核通过调用所述目标功能函数实现所述目标扩展功能。
可选地,基于所述扩展功能开发标准开发得到的所述库文件中包括:功能函数列表,其中,所述功能函数列表包括存储在所述库文件中的至少一个功能函数的描述信息,所述至少一个功能函数包括所述目标功能函数。
可选地,所述识别所述库文件中存储的目标功能函数,并在所述计算软件的内核中存储所述目标扩展功能与所述目标功能函数之间的调用关系,包括:读取所述功能函数列表并将所述功能函数列表存储在所述计算软件的内核中,其中,所述描述信息包括所述至少一个功能函数各自对应的扩展功能和参数格式,当所述计算软件使用所述目标扩展功能时,根据所述计算软件的内核中存储的所述功能函数列表调用与所述目标扩展功能对应的所述目标功能函数。
可选地,所述至少一个功能函数的参数格式包括如下参数项:功能函数名称;功能函数运行时输出参数的个数;包含内核对象的数组,用于表示运行时各个输出参数的内存地址;功能函数运行时输入参数的个数;包含内核对象的数组,用于表示运行时各个输入参数的内存地址;当所述计算软件读取到请求使用所述目标扩展功能的第一代码语句时,根据存储在所述计算软件内核中的所述功能函数列表将所述代码语句翻译为符合所述参数格式的第二代码语句;根据所述第二代码语句,调用所述库文件中存储的用于实现所述目标扩展功能的所述目标功能函数。
可选地,基于所述扩展功能开发标准开发得到的所述库文件中还包括以下至少之一:初始化句柄和析构句柄,其中,所述初始化句柄,用于在所述计算软件中注册自定义的数据类型并为所述自定义的数据类型分配内存资源,其中,所述初始化句柄在所述计算软件加载所述库文件时被所述计算软件的内核调用执行;所述析构句柄,用于在所述计算软件卸载所述库文件时进行资源释放,其中,所述析构句柄在所述计算软件卸载所述库文件时被所述计算软件的内核调用执行。
可选地,所述根据所述调用指令,检查与所述目标扩展功能对应的库文件是否满足预定条件,包括以下步骤至少之一:根据所述库文件的签名确定所述库文件是否已授权;读取所述库文件的所述功能函数列表,并根据所述功能函数列表包括的描述信息判断所述库文件中存储的所述目标功能函数是否与所述计算软件中已注册的其他功能函数存在冲突。
可选地,基于所述计算软件的内核的头文件和所述计算软件的扩展功能开发标准开发得到库文件包括:基于所述计算软件的内核的头文件以及所述计算软件的扩展功能开发标准,编写扩展功能源码,其中,所述扩展功能源码用于供所述计算软件调用以实现至少一个扩展功能;基于所述计算软件的内核提供的API函数库,将所述扩展功能源码编译为所述库文件。
根据本发明实施例的另一方面,还提供了一种计算软件的扩展装置,包括:接收单元,用于接收调用指令,其中,所述调用指令用于在计算软件中添加目标扩展功能;检查单元,用于根据所述调用指令,检查与所述目标扩展功能对应的库文件是否满足预定条件,其中,所述库文件基于所述计算软件的内核的头文件和所述计算软件的扩展功能开发标准开发得到;识别单元,用于在所述库文件满足预定条件的情况下,识别所述库文件中存储的目标功能函数,并在所述计算软件的内核中存储所述目标扩展功能与所述目标功能函数之间的调用关系,其中,所述计算软件的内核通过调用所述目标功能函数实现所述目标扩展功能。
根据本发明实施例的又一方面,还提供了一种非易失性存储介质,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行上述任意一项所述计算软件的扩展方法。
根据本发明实施例的再一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述计算软件的扩展方法。
在本发明实施例中,采用将计算软件的内核与实现扩展功能的扩展模块分离开来的框架,在接收用于在计算软件中添加目标扩展功能的调用指令之后,通过检查与目标扩展功能对应的基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到的库文件是否满足预定条件,在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,达到了将用于实现计算软件的扩展功能的库文件与计算软件的内核分离开来,使得开发人员不需要对计算软件的内核进行开发就可以为计算软件进行功能扩展的目的,从而实现了减轻开发人员为计算软件开发扩展功能的工作压力、提高了扩展功能开发效率的技术效果,进而解决了计算软件难以便捷地进行功能扩展的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了一种用于实现计算软件的扩展方法的计算机终端的硬件结构框图;
图2是根据本发明实施例提供的计算软件的扩展方法的流程示意图;
图3是根据本发明可选实施例的一种计算软件功能扩展开发框架的示意图;
图4是根据本发明可选实施例的一种开发和应用计算软件扩展功能的流程图;
图5是根据本发明实施例提供的计算软件的扩展方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种计算软件的扩展方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现计算软件的扩展方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器(处理器可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的计算软件的扩展方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的计算软件的扩展方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10的用户界面进行交互。
图2是根据本发明实施例提供的计算软件的扩展方法的流程示意图,如图2所示,该方法包括如下步骤:
步骤S202,接收调用指令,其中,调用指令用于在计算软件中添加目标扩展功能。本步骤中,调用指令可以是计算软件的使用用户发出的指令,用户意图通过该指令在计算软件中添加计算软件原本不具有的扩展功能,可选地,扩展功能可以是一种通过函数实现的数据处理方法,也可以是计算软件原本不具有的数据类型。
需要说明的是,本发明实施例中所说的计算软件可以为大型数值计算软件,例如是可以为用户提供仿真模拟、统计数据处理、3D建模中的一种或几种功能的软件。该类型的计算软件功能复杂强大,因此软件内核较为复杂,对普通开发者来说难以进行新的扩展功能的开发,因此开发者可以通过本发明保护的技术方案实现计算软件扩展功能的便捷开发,提高了为计算软件开发扩展功能的开发效率。
步骤S204,根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,其中,库文件基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到。
库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。可选地,计算软件接收到调用指令后,计算软件的内核可以在指定位置去查找是否存在与目标扩展功能对应的库文件。例如,指定位置可能存在多个库文件,多个库文件分别用于为计算软件提供不同的扩展功能,计算软件不需要读取加载每一个库文件,只需要读取加载与目标扩展功能对应的库文件即可。检查库文件是否满足预定条件,可以是检查库文件是否可用、是否能够实现扩展功能等检查过程。
需要说明的是,计算软件的扩展功能开发标准可以是计算软件开发商预先确定并发布的标准,专门用于指导合作开发者、社区开发者或者用户进行计算软件扩展功能的开发,上述开发者只需要遵从扩展功能开发标准就可以开发出可扩展计算软件的功能的扩展模块,其中,用于实现扩展功能的库文件可以是扩展模块的组成部分之一。对本发明保护的技术方案中的计算软件来说,合作开发者或者社区开发者在整个扩展功能开发的过程中都不需要直到计算软件的内核函数的实现细节,而只需要利用计算软件的头文件提供的计算软件内核函数与内核进行交互(例如创建对象、读取数据等)。
步骤S206,在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,其中,计算软件的内核通过调用目标功能函数实现目标扩展功能。
本实施例的步骤S206中,计算软件的内核不需要将库文件复制到内核程序中,内核也不需要知道库文件中的函数实现细节,只需要识别出库文件中有哪些功能函数以及这些功能函数能实现哪些功能即可。后续当计算软件需要实现目标扩展功能时,可以根据存储在内核中的目标扩展功能与目标功能函数之间的调用关系直接去库文件中调用目标功能函数。
通过上述步骤,采用将计算软件的内核与实现扩展功能的扩展模块分离开来的框架,在接收用于在计算软件中添加目标扩展功能的调用指令之后,通过检查与目标扩展功能对应的基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到的库文件是否满足预定条件,在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,达到了将用于实现计算软件的扩展功能的库文件与计算软件的内核分离开来,使得开发人员不需要对计算软件的内核进行开发就可以为计算软件进行功能扩展的目的,从而实现了减轻开发人员为计算软件开发扩展功能的工作压力、提高了扩展功能开发效率的技术效果,进而解决了计算软件难以便捷地进行功能扩展的技术问题。
作为一种可选的实施例,基于扩展功能开发标准开发得到的库文件中可以包括功能函数列表,其中,功能函数列表包括存储在库文件中的至少一个功能函数的描述信息,至少一个功能函数包括目标功能函数。一般来说,库文件中的功能函数列表应该是非空的,即列表中包括至少一个功能函数的描述信息。可选地,功能函数列表可以是一个数组,数组中包含了库文件中所有能够实现的扩展功能对应的功能函数的描述信息。功能函数的描述信息可以记载这个功能函数能够实现的扩展功能,调用功能函数所需要的参数或者参数格式等等信息。
作为一种可选的实施例,基于扩展功能开发标准开发得到的库文件中还可以包括初始化句柄和析构句柄中的至少之一,其中,初始化句柄用于在计算软件中注册自定义的数据类型并为自定义的数据类型分配内存资源,该句柄在计算软件加载库文件时被计算软件的内核调用执行;析构句柄用于在计算软件卸载库文件时进行资源释放,析构句柄在计算软件卸载库文件时被计算软件的内核调用执行。
初始化句柄可以是计算软件载入库文件时首先执行的代码块,可选地,可以通过该句柄在计算软件中添加自定义的C/C++数据类型。当计算软件不需要添加新的数据类型时,内核可以不执行该句柄或者在库文件中不编写这部分句柄。与初始化句柄类似,析构句柄可以是计算软件卸载库文件时首先执行的代码块,主要用于进行内存资源的释放。
可选地,计算软件支持开发者将自定义的数据类型托管至内核。托管的含义为:在计算软件窗口中会看到一个表示开发者自定义数据的变量,且用户可以对这个变量做简单的操作。
例如,示例语句如下:
A = mcreate(m, n);
V = oper(A, i);
上述示例语句中,A是一个由扩展功能对应的库文件定义的数据类型,计算软件的内核可以在不了解其实现细节的情况下,仍然可以将其作为另一个功能函数的参数进行调用。
需要说明的是,开发者托管自定义数据可以按照如下规范:
定义自定义数据的复制函数,确定如何利用扩展功能的自定义数据产生一个副本。例如,当内核执行类似于B = A的语句时,会调用该复制函数。
定义自定义数据的析构函数,确定如何释放该扩展功能的自定义数据占用的内存资源。当插件被卸载或托管的变量以某种方式销毁时,会调用该析构函数。
还可以定义自定义数据的字符串转化函数,确定内核如何将该自定义数据转化为可阅读的字符串。当用户在数值计算软件窗口中使用disp命令时,会调用该函数。
其中,内核可以不主动构建扩展功能中的自定义数据,所有产生该自定义数据的行为可以均由功能函数发起,此时,无需实现自定义数据的构造函数。
实现自定义数据的规范后,开发者需要在库文件载入阶段向内核中注册这个数据类型,以便内核对其进行识别。注册的行为通常发生在库文件的初始化句柄中。
数据类型注册成功后,计算软件的内核可以向库返回一个整数,来表示该数据类型在内核中的编号(SID),开发者可以利用SID来检查内核中的某对象是否属于托管的自定义数据类型。
作为一种可选的实施例,基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到库文件包括:基于计算软件的内核的头文件以及计算软件的扩展功能开发标准,编写扩展功能源码,其中,扩展功能源码用于供计算软件调用以实现至少一个扩展功能;基于计算软件的内核提供的API函数库,将扩展功能源码编译为库文件。
可选地,扩展功能的开发者可以首先获取计算软件的内核头文件,然后根据头文件以及扩展功能开发标准,编写扩展功能的源码,在源码中定义若干入口(例如功能函数列表、初始化句柄、析构句柄等),在源码中编写好功能函数,以及在源码中定义自定义数据类型以及自定义数据类型的函数;进一步地,可以利用计算软件内核提供的API函数库,将扩展功能源码编译为二进制的用于实现扩展功能的库文件,以供计算软件内核调用。
需要说明的是,开发者不需要了解内核对象的实现过程,计算软件内核向开发者提供头文件和API函数库,开发者可以直接调用内核的API函数库来对内核对象进行访问和修改。完整的内核API函数库文档可以随计算软件发布提供。
作为一种可选的实施例,根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,可以包括以下步骤至少之一:根据库文件的签名确定库文件是否已授权;读取库文件的功能函数列表,并根据功能函数列表包括的描述信息判断库文件中存储的目标功能函数是否与计算软件中已注册的其他功能函数存在冲突。
本可选的实施例中提供了几种库文件的检查逻辑,其中,检查库文件是否具有正确的签名,是为了防止计算软件载入了未获得授权的库文件;检查是否存在冲突,是为了避免目标功能函数与计算软件中已注册的其他扩展功能的功能函数或者计算软件的默认功能函数存在命名冲突导致调用错误。此外,还可以检查库文件的外部依赖是否满足,以及在库文件中存在实现的初始化句柄的情况下读取该句柄,并根据用户的输入调用初始化句柄,测试初始化句柄是否正常。
可选地,当完成对库文件的上述检查,即库文件满足上述预定条件的情况下,计算软件的内核可以获取功能函数的地址(即加载功能函数),并向内核中注册自定义数据类型(如过存在初始化句柄)。若库文件未通过上述检查,则不加载该库,并打印错误信息。成功载入该库后,用户可以在计算软件中正常使用该库文件提供的功能函数和自定义数据类型,直到计算软件关闭或主动卸载该库文件。
作为一种可选的实施例,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,可以首先读取功能函数列表并将功能函数列表存储在计算软件的内核中,其中,描述信息包括至少一个功能函数各自对应的扩展功能和参数格式,当计算软件使用目标扩展功能时,根据计算软件的内核中存储的功能函数列表调用与目标扩展功能对应的目标功能函数。
作为一种可选的实施例,至少一个功能函数的参数格式包括如下参数项:功能函数名称;功能函数运行时输出参数的个数;包含内核对象的数组,用于表示运行时各个输出参数的内存地址;功能函数运行时输入参数的个数;包含内核对象的数组,用于表示运行时各个输入参数的内存地址;当计算软件读取到请求使用目标扩展功能的第一代码语句时,根据存储在计算软件内核中的功能函数列表将代码语句翻译为符合参数格式的第二代码语句;根据第二代码语句,调用库文件中存储的用于实现目标扩展功能的目标功能函数。
可选地,功能函数的原型参数格式可以采用如下格式:
void mfun_name ( int nlhs, Data* plhs[ ], int nrhs, const Data* prhs[ ] )
其中各个部分含义如下:
- mfun_name 表示功能函数的名称;
- nlhs 一个正整数,表示运行时输出参数的个数;
- plhs 一个包含内核对象的数组,表示运行时各个输出参数的内存地址;
- nrhs 一个正整数,表示运行时输入参数的个数;
- prhs 一个包含内核对象的数组,表示运行时各个输入参数的内存地址,默认不可改变。
计算软件的内核载入扩展功能对应的库文件后,用户就可以直接在计算软件中编写如下第一代码语句:
[x, y] = mfun_name(a, b, c);
内核会将该语句翻译为:
mfun_name(2, [x, y], 3, [a, b, c]);
然后据此调用库文件中对应的目标功能函数,具体的参数检查依赖库文件本身实现。
图3是根据本发明可选实施例的一种计算软件功能扩展开发框架的示意图。如图3所示,数值计算软件内核即为本发明保护的计算软件的内核,该内核可以向社区开发者提供内核头文件,开发者基于头文件以及计算软件发布的扩展功能标准开发出多个扩展模块,其中扩展模块可以由用于实现扩展功能的库文件组成。开发者开发的扩展模块可以载入计算软件的内核,在内核中注册模块中的功能函数以及模块中自定义的数据类型,供计算软件的用户进行调用。
图4是根据本发明可选实施例的一种开发和应用计算软件扩展功能的流程图整个计算软件扩展功能的开发和应用框架如图4所示,整个框架的工作流程分为两层:开发层和调用层。开发层主要包含扩展功能模块的开发者的工作,在这一层级中计算软件内核无需运行。调用层主要包含用户和内核实际使用扩展功能模块的过程。
开发层的逻辑流程如下:开发者获取计算软件内核头文件;根据头文件以及扩展功能开发标准编写扩展功能的源码。源码中可以定义若干入口(例如函数功能列表、初始化函数、析构函数等),编写功能函数,以及实现自定义数据类型并注册;利用内核提供的API函数库,将扩展功能源码编译为二进制的扩展功能的库文件,开发层的最终产物为库文件,以供内核进行调用。
调用层的逻辑流程如下:用户向内核发出指令,请求实现目标扩展功能;内核在指定位置查找目标扩展功能对应的库文件,读取该库文件并进行以下检查:检查库文件是否具有正确签名,防止载入了未授权的扩展模块;检查扩展模块的外部依赖是否满足;读取扩展模块实现的模块功能函数列表,并和内核中已注册的功能函数进行对比,确保无命名冲突;读取扩展模块中实现的初始化句柄,根据用户的输入调用初始化句柄,测试初始化句柄是否正常;若扩展模块通过完整性检查,获取扩展模块的功能函数地址(即加载该函数),以及向内核中注册自定义数据类型。若未通过完整性检查,则卸载该模块,打印错误信息。
在成功载入扩展模块后,用户在软件中可以正常使用扩展模块的库文件中提供的功能函数和自定义数据类型,直到软件关闭或主动卸载。
卸载扩展模块的逻辑流程如下:用户向内核发出指令,准备卸载扩展模块;内核进行依赖性检查;调用自定义数据的析构函数,清除内核中和该扩展模块相关的自定义数据结构;执行扩展模块的析构句柄;关闭扩展模块的库文件,从内存中移除相关功能函数。一个扩展模块被卸载后,它所占用的内存空间将会被回收,和其相关的对象也会被清除干净。用户执行了卸载操作后便不能使用和该扩展模块相关的功能函数。
实施例2
根据本发明实施例,还提供了一种用于实施上述计算软件的扩展方法的计算软件的扩展装置,图5是根据本发明实施例提供的计算软件的扩展装置的结构框图,如图5所示,该计算软件的扩展装置包括:接收单元52,检查单元54和识别单元56,下面对该计算软件的扩展装置进行说明。
接收单元52,用于接收调用指令,其中,调用指令用于在计算软件中添加目标扩展功能;
检查单元54,连接于上述接收单元52,用于根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,其中,库文件基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到;
识别单元56,连接于上述检查单元54,用于在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,其中,计算软件的内核通过调用目标功能函数实现目标扩展功能。
此处需要说明的是,上述接收单元52,检查单元54和识别单元56对应于实施例1中的步骤S202至步骤S206,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
实施例3
本发明的实施例可以提供一种计算机设备,可选地,在本实施例中,上述计算机设备可以位于计算机网络的多个网络设备中的至少一个网络设备。该计算机设备包括存储器和处理器。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的计算软件的扩展方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的计算软件的扩展方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:接收调用指令,其中,调用指令用于在计算软件中添加目标扩展功能;根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,其中,库文件基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到;在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,其中,计算软件的内核通过调用目标功能函数实现目标扩展功能。
可选的,上述处理器还可以执行如下步骤的程序代码:基于扩展功能开发标准开发得到的库文件中包括:功能函数列表,其中,功能函数列表包括存储在库文件中的至少一个功能函数的描述信息,至少一个功能函数包括目标功能函数。
可选的,上述处理器还可以执行如下步骤的程序代码:识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,包括:读取功能函数列表并将功能函数列表存储在计算软件的内核中,其中,描述信息包括至少一个功能函数各自对应的扩展功能和参数格式,当计算软件使用目标扩展功能时,根据计算软件的内核中存储的功能函数列表调用与目标扩展功能对应的目标功能函数。
可选的,上述处理器还可以执行如下步骤的程序代码:至少一个功能函数的参数格式包括如下参数项:功能函数名称;功能函数运行时输出参数的个数;包含内核对象的数组,用于表示运行时各个输出参数的内存地址;功能函数运行时输入参数的个数;包含内核对象的数组,用于表示运行时各个输入参数的内存地址;当计算软件读取到请求使用目标扩展功能的第一代码语句时,根据存储在计算软件内核中的功能函数列表将代码语句翻译为符合参数格式的第二代码语句;根据第二代码语句,调用库文件中存储的用于实现目标扩展功能的目标功能函数。
可选的,上述处理器还可以执行如下步骤的程序代码:基于扩展功能开发标准开发得到的库文件中还包括以下至少之一:初始化句柄和析构句柄,其中,初始化句柄,用于在计算软件中注册自定义的数据类型并为自定义的数据类型分配内存资源,其中,初始化句柄在计算软件加载库文件时被计算软件的内核调用执行;析构句柄,用于在计算软件卸载库文件时进行资源释放,其中,析构句柄在计算软件卸载库文件时被计算软件的内核调用执行。
可选的,上述处理器还可以执行如下步骤的程序代码:根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,包括以下步骤至少之一:根据库文件的签名确定库文件是否已授权;读取库文件的功能函数列表,并根据功能函数列表包括的描述信息判断库文件中存储的目标功能函数是否与计算软件中已注册的其他功能函数存在冲突。
可选的,上述处理器还可以执行如下步骤的程序代码:基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到库文件包括:基于计算软件的内核的头文件以及计算软件的扩展功能开发标准,编写扩展功能源码,其中,扩展功能源码用于供计算软件调用以实现至少一个扩展功能;基于计算软件的内核提供的API函数库,将扩展功能源码编译为库文件。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一非易失性存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种非易失性存储介质。可选地,在本实施例中,上述非易失性存储介质可以用于保存上述实施例1所提供的计算软件的扩展方法所执行的程序代码。
可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:接收调用指令,其中,调用指令用于在计算软件中添加目标扩展功能;根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,其中,库文件基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到;在库文件满足预定条件的情况下,识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,其中,计算软件的内核通过调用目标功能函数实现目标扩展功能。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:基于扩展功能开发标准开发得到的库文件中包括:功能函数列表,其中,功能函数列表包括存储在库文件中的至少一个功能函数的描述信息,至少一个功能函数包括目标功能函数。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:识别库文件中存储的目标功能函数,并在计算软件的内核中存储目标扩展功能与目标功能函数之间的调用关系,包括:读取功能函数列表并将功能函数列表存储在计算软件的内核中,其中,描述信息包括至少一个功能函数各自对应的扩展功能和参数格式,当计算软件使用目标扩展功能时,根据计算软件的内核中存储的功能函数列表调用与目标扩展功能对应的目标功能函数。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:至少一个功能函数的参数格式包括如下参数项:功能函数名称;功能函数运行时输出参数的个数;包含内核对象的数组,用于表示运行时各个输出参数的内存地址;功能函数运行时输入参数的个数;包含内核对象的数组,用于表示运行时各个输入参数的内存地址;当计算软件读取到请求使用目标扩展功能的第一代码语句时,根据存储在计算软件内核中的功能函数列表将代码语句翻译为符合参数格式的第二代码语句;根据第二代码语句,调用库文件中存储的用于实现目标扩展功能的目标功能函数。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:基于扩展功能开发标准开发得到的库文件中还包括以下至少之一:初始化句柄和析构句柄,其中,初始化句柄,用于在计算软件中注册自定义的数据类型并为自定义的数据类型分配内存资源,其中,初始化句柄在计算软件加载库文件时被计算软件的内核调用执行;析构句柄,用于在计算软件卸载库文件时进行资源释放,其中,析构句柄在计算软件卸载库文件时被计算软件的内核调用执行。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:根据调用指令,检查与目标扩展功能对应的库文件是否满足预定条件,包括以下步骤至少之一:根据库文件的签名确定库文件是否已授权;读取库文件的功能函数列表,并根据功能函数列表包括的描述信息判断库文件中存储的目标功能函数是否与计算软件中已注册的其他功能函数存在冲突。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:基于计算软件的内核的头文件和计算软件的扩展功能开发标准开发得到库文件包括:基于计算软件的内核的头文件以及计算软件的扩展功能开发标准,编写扩展功能源码,其中,扩展功能源码用于供计算软件调用以实现至少一个扩展功能;基于计算软件的内核提供的API函数库,将扩展功能源码编译为库文件。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种计算软件的扩展方法,其特征在于,包括:
接收调用指令,其中,所述调用指令用于在计算软件中添加目标扩展功能;
根据所述调用指令,检查与所述目标扩展功能对应的库文件是否满足预定条件,其中,所述库文件基于所述计算软件的内核的头文件和所述计算软件的扩展功能开发标准开发得到;
在所述库文件满足预定条件的情况下,识别所述库文件中存储的目标功能函数,并在所述计算软件的内核中存储所述目标扩展功能与所述目标功能函数之间的调用关系,其中,所述计算软件的内核通过调用所述目标功能函数实现所述目标扩展功能。
2.根据权利要求1所述的方法,其特征在于,基于所述扩展功能开发标准开发得到的所述库文件中包括:功能函数列表,其中,所述功能函数列表包括存储在所述库文件中的至少一个功能函数的描述信息,所述至少一个功能函数包括所述目标功能函数。
3.根据权利要求2所述的方法,其特征在于,所述识别所述库文件中存储的目标功能函数,并在所述计算软件的内核中存储所述目标扩展功能与所述目标功能函数之间的调用关系,包括:读取所述功能函数列表并将所述功能函数列表存储在所述计算软件的内核中,其中,所述描述信息包括所述至少一个功能函数各自对应的扩展功能和参数格式,当所述计算软件使用所述目标扩展功能时,根据所述计算软件的内核中存储的所述功能函数列表调用与所述目标扩展功能对应的所述目标功能函数。
4.根据权利要求3所述的方法,其特征在于,所述至少一个功能函数的参数格式包括如下参数项:功能函数名称;功能函数运行时输出参数的个数;包含内核对象的数组,用于表示运行时各个输出参数的内存地址;功能函数运行时输入参数的个数;包含内核对象的数组,用于表示运行时各个输入参数的内存地址;
当所述计算软件读取到请求使用所述目标扩展功能的第一代码语句时,根据存储在所述计算软件内核中的所述功能函数列表将所述代码语句翻译为符合所述参数格式的第二代码语句;
根据所述第二代码语句,调用所述库文件中存储的用于实现所述目标扩展功能的所述目标功能函数。
5.根据权利要求2所述的方法,基于所述扩展功能开发标准开发得到的所述库文件中还包括以下至少之一:初始化句柄和析构句柄,其中,
所述初始化句柄,用于在所述计算软件中注册自定义的数据类型并为所述自定义的数据类型分配内存资源,其中,所述初始化句柄在所述计算软件加载所述库文件时被所述计算软件的内核调用执行;
所述析构句柄,用于在所述计算软件卸载所述库文件时进行资源释放,其中,所述析构句柄在所述计算软件卸载所述库文件时被所述计算软件的内核调用执行。
6.根据权利要求2所述的方法,其特征在于,所述根据所述调用指令,检查与所述目标扩展功能对应的库文件是否满足预定条件,包括以下步骤至少之一:
根据所述库文件的签名确定所述库文件是否已授权;
读取所述库文件的所述功能函数列表,并根据所述功能函数列表包括的描述信息判断所述库文件中存储的所述目标功能函数是否与所述计算软件中已注册的其他功能函数存在冲突。
7.根据权利要求1所述的方法,其特征在于,基于所述计算软件的内核的头文件和所述计算软件的扩展功能开发标准开发得到所述库文件包括:
基于所述计算软件的内核的头文件以及所述计算软件的扩展功能开发标准,编写扩展功能源码,其中,所述扩展功能源码用于供所述计算软件调用以实现至少一个扩展功能;
基于所述计算软件的内核提供的API函数库,将所述扩展功能源码编译为所述库文件。
8.一种计算软件的扩展装置,其特征在于,包括:
接收单元,用于接收调用指令,其中,所述调用指令用于在计算软件中添加目标扩展功能;
检查单元,用于根据所述调用指令,检查与所述目标扩展功能对应的库文件是否满足预定条件,其中,所述库文件基于所述计算软件的内核的头文件和所述计算软件的扩展功能开发标准开发得到;
识别单元,用于在所述库文件满足预定条件的情况下,识别所述库文件中存储的目标功能函数,并在所述计算软件的内核中存储所述目标扩展功能与所述目标功能函数之间的调用关系,其中,所述计算软件的内核通过调用所述目标功能函数实现所述目标扩展功能。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至7中任意一项所述计算软件的扩展方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述计算软件的扩展方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210063639.9A CN114089975B (zh) | 2022-01-20 | 2022-01-20 | 计算软件的扩展方法、装置、非易失性存储介质及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210063639.9A CN114089975B (zh) | 2022-01-20 | 2022-01-20 | 计算软件的扩展方法、装置、非易失性存储介质及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114089975A true CN114089975A (zh) | 2022-02-25 |
CN114089975B CN114089975B (zh) | 2022-06-24 |
Family
ID=80308895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210063639.9A Active CN114089975B (zh) | 2022-01-20 | 2022-01-20 | 计算软件的扩展方法、装置、非易失性存储介质及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114089975B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113860A (zh) * | 2022-08-31 | 2022-09-27 | 北京云枢创新软件技术有限公司 | 基于Python的EDA软件二次开发系统 |
CN115774564A (zh) * | 2022-11-03 | 2023-03-10 | 北京大学重庆大数据研究院 | 任务处理方法、装置及电子设备 |
CN116627547A (zh) * | 2023-05-18 | 2023-08-22 | 弗雷森斯(苏州)科技有限公司 | 一种基于命令字框架的软件系统的扩展方法和系统 |
CN117150515A (zh) * | 2023-10-31 | 2023-12-01 | 上海合见工业软件集团有限公司 | Eda二次开发源代码的安全保护方法、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041878A1 (en) * | 2004-08-18 | 2006-02-23 | International Business Machines Corporation | Administration of kernel extensions |
CN102129385A (zh) * | 2011-03-22 | 2011-07-20 | 曙光信息产业(北京)有限公司 | 一种虚拟机管理功能动态扩展的管理方法 |
US20120102485A1 (en) * | 2010-10-22 | 2012-04-26 | Adobe Systems Incorporated | Runtime Extensions |
US20120324484A1 (en) * | 2011-06-14 | 2012-12-20 | International Business Machines Corporation | Dynamic Loading of Kernel Extensions |
CN103677979A (zh) * | 2013-12-31 | 2014-03-26 | 北界创想(北京)软件有限公司 | 应用软件和插件的交互方法及装置 |
CN105389222A (zh) * | 2015-12-15 | 2016-03-09 | 中国科学院声学研究所 | 一种动态调用原生接口的方法、装置和系统 |
CN109144478A (zh) * | 2018-07-12 | 2019-01-04 | 北京猫眼文化传媒有限公司 | 组件框架系统以及组件框架系统的使用方法 |
CN111737032A (zh) * | 2020-07-27 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种基于微内核系统的子程序运行方法、装置和电子设备 |
CN113703859A (zh) * | 2020-05-08 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 一种动态链接库注入方法、装置、设备及存储介质 |
-
2022
- 2022-01-20 CN CN202210063639.9A patent/CN114089975B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060041878A1 (en) * | 2004-08-18 | 2006-02-23 | International Business Machines Corporation | Administration of kernel extensions |
US20120102485A1 (en) * | 2010-10-22 | 2012-04-26 | Adobe Systems Incorporated | Runtime Extensions |
CN102129385A (zh) * | 2011-03-22 | 2011-07-20 | 曙光信息产业(北京)有限公司 | 一种虚拟机管理功能动态扩展的管理方法 |
US20120324484A1 (en) * | 2011-06-14 | 2012-12-20 | International Business Machines Corporation | Dynamic Loading of Kernel Extensions |
CN103677979A (zh) * | 2013-12-31 | 2014-03-26 | 北界创想(北京)软件有限公司 | 应用软件和插件的交互方法及装置 |
CN105389222A (zh) * | 2015-12-15 | 2016-03-09 | 中国科学院声学研究所 | 一种动态调用原生接口的方法、装置和系统 |
CN109144478A (zh) * | 2018-07-12 | 2019-01-04 | 北京猫眼文化传媒有限公司 | 组件框架系统以及组件框架系统的使用方法 |
CN113703859A (zh) * | 2020-05-08 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 一种动态链接库注入方法、装置、设备及存储介质 |
CN111737032A (zh) * | 2020-07-27 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种基于微内核系统的子程序运行方法、装置和电子设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113860A (zh) * | 2022-08-31 | 2022-09-27 | 北京云枢创新软件技术有限公司 | 基于Python的EDA软件二次开发系统 |
CN115113860B (zh) * | 2022-08-31 | 2022-11-18 | 北京云枢创新软件技术有限公司 | 基于Python的EDA软件二次开发系统 |
CN115774564A (zh) * | 2022-11-03 | 2023-03-10 | 北京大学重庆大数据研究院 | 任务处理方法、装置及电子设备 |
CN116627547A (zh) * | 2023-05-18 | 2023-08-22 | 弗雷森斯(苏州)科技有限公司 | 一种基于命令字框架的软件系统的扩展方法和系统 |
CN117150515A (zh) * | 2023-10-31 | 2023-12-01 | 上海合见工业软件集团有限公司 | Eda二次开发源代码的安全保护方法、电子设备及存储介质 |
CN117150515B (zh) * | 2023-10-31 | 2024-01-26 | 上海合见工业软件集团有限公司 | Eda二次开发源代码的安全保护方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114089975B (zh) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114089975B (zh) | 计算软件的扩展方法、装置、非易失性存储介质及处理器 | |
CN101382905B (zh) | 用于虚拟机环境中的仿真设备的开发的系统和方法 | |
EP4325351A2 (en) | Methods and systems for providing high-level operations on a blockchain | |
US10360005B2 (en) | Local function call tailoring for function pointer calls | |
CN106959927B (zh) | 获取虚拟机中的逻辑分区的位置信息的方法及装置 | |
CN111324396A (zh) | 一种区块链智能合约执行方法、装置及设备 | |
CN110140108B (zh) | 处理兄弟调用 | |
US10387124B2 (en) | System and method for creating domain specific language | |
CN114398172A (zh) | 资源配置方法、装置、电子设备及计算机可读存储介质 | |
CN114116134A (zh) | 智能合约部署和执行方法、设备及存储介质 | |
CN111427782B (zh) | 安卓动态链接库的运行方法、装置、设备及存储介质 | |
CN110333872A (zh) | 一种应用的处理方法、装置、设备和介质 | |
CN111078279A (zh) | 字节码文件的处理方法、装置、设备及存储介质 | |
CN112882690B (zh) | 一种应用开发方法及装置 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
CN111984263A (zh) | 在第一系统运行第二系统应用的方法、装置、设备及介质 | |
CN115599618B (zh) | 寄存器动态改配验证方法、装置、存储介质和处理器 | |
CN112764729B (zh) | 应用软件开发方法、装置、计算机设备及可读存储介质 | |
CN115629795A (zh) | 一种可执行文件的配置方法、装置及电子设备 | |
CN105138378A (zh) | 一种bios刷写方法及电子设备 | |
CN115220873A (zh) | 一种在Android系统中运行Open Harmony应用的方法 | |
CN110333870B (zh) | Simulink模型变量分配的处理方法、装置及设备 | |
CN114174983A (zh) | 使用测试向量自动验证高级构造的优化 | |
CN111949296A (zh) | 一种数据更新方法及装置 | |
CN116700840B (zh) | 文件执行方法、装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |