CN113867720A - 软件平台用第三方程序库函数互调方法及互调*** - Google Patents
软件平台用第三方程序库函数互调方法及互调*** Download PDFInfo
- Publication number
- CN113867720A CN113867720A CN202111147972.XA CN202111147972A CN113867720A CN 113867720 A CN113867720 A CN 113867720A CN 202111147972 A CN202111147972 A CN 202111147972A CN 113867720 A CN113867720 A CN 113867720A
- Authority
- CN
- China
- Prior art keywords
- software platform
- party
- library
- party program
- program library
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000006870 function Effects 0.000 claims abstract description 150
- 230000001419 dependent effect Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 16
- 230000000694 effects Effects 0.000 claims description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/35—Creation or generation of source code model driven
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明为一种软件平台用第三方程序库函数互调方法及互调***,其中软件平台用第三方程序库函数互调方法包括:构建多个第三方程序库;检验第三方程序库的合法性;以及多个第三方程序库进行互相调用,实现了通过软件平台实现一个通用的调用框架,使得第三方程序库在软件平台中注册的函数可以在所有加载的第三方程序库之间共享,在当前第三方程序库需要调用其他第三方程序库时,无需加载其他第三方程序库,只要使用软件平台分享给当前第三方程序库的包含其他第三方程序库的函数表,即可实现对其他第三方程序库的访问,当其他第三方程序库没有加载时,软件平台和当前第三方程序库都能得知这一情况,这使得当前第三方程序库能顺利加载并提供部分功能。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种软件平台用第三方程序库函数互调方法及互调***。
背景技术
基于Windows的软件平台通过导入第三方程序库的方式进行功能扩展。在软件平台所导入的第三方程序库中存在一个第三方程序库调用其他第三方程序库的情况。传统的做法是修改其当前第三方程序库,通过隐式或显式加其他第三方程序库的方法实现对其他第三方程序库的调用。
现有的技术方案带来的问题是,通过修改当前第三方程序库的方法来支持其他第三方程序库的调用,需要额外增加当前第三方程序库的工作量,随着其他第三方程序库的更改,当前第三方程序库也得同步更改;同时若当前第三方程序库是通过显式加载其他第三方程序库的方法调用其他第三方程序库时,若其他第三方程序库不存在则当前第三方程序库也无法加载。
因此,基于上述技术问题需要设计一种新的软件平台用第三方程序库函数互调方法及互调***。
发明内容
本发明的目的是提供一种软件平台用第三方程序库函数互调方法及互调***。
为了解决上述技术问题,本发明提供了一种软件平台用第三方程序库函数互调方法,包括:
构建多个第三方程序库;
检验第三方程序库的合法性;以及
多个第三方程序库进行互相调用。
进一步,所述构建多个第三方程序库的方法包括:
通过软件平台构建各第三方程序库,即通过软件平台构建各第三方程序库中的初始化子模块、能力获取子模块和内部子模块,以及在第三方程序库中构建释放子模块;
所述释放子模块适于在第三方程序库被卸载时自动释放其申请的资源。
进一步,所述通过软件平台构建初始化子模块的方法包括:
通过软件平台内的软件平台头文件和软件平台API列表生成初始化子模块,以在初始化子模块调用完成后,第三方程序库获取软件平台提供的API列表中每个API的地址信息。
进一步,所述通过软件平台构建能力获取子模块的方法包括:
软件平台加载软件平台版本号、对应的用户逻辑回调子模块的列表和相应第三方程序库依赖外部子模块列表生成能力获取子模块,在外部程序调用能力获取子模块时获取该第三方程序库对应的软件平台的版本信息、用户逻辑回调子模块的列表信息、此第三方程序库依赖外部子模块信息和此第三方程序库所有的内部子模块信息。
进一步,所述通过软件平台构建内部子模块的方法包括:
根据软件平台的用户功能逻辑子模块生成内部子模块。
进一步,所述检验第三方程序库的合法性的方法包括:
将第三方程序库加载至软件平台,软件平台调用第三方程序库的初始化子模块,以及软件平台调用第三方程序库的能力获取子模块,获取第三方程序库对应的软件平台的版本号、用户回调子模块的列表、第三方程序库所有的内部子模块的地址信息和函数参数信息,以及该第三方程序库所依赖的外部子模块信息;
软件平台向第三方程序库提供其所依赖的子模块指针;
若第三方程序库所依赖的外部子模块不存在,则软件平台向该第三方程序库提供空指针;
在第三方程序库在调用过程中,根据是否是空指针判断是否存在该第三方程序库所依赖的其他第三方程序库;
若为空指针则该第三方程序库所依赖的其他第三方程序库的内部子模块不生效,但该第三方程序库中的其他内部子模块的功能依然生效;
软件平台将获取的三方程序库对应的软件平台的版本号与自身的版本号进行对比,若第三方程序库的版本号大于自身版本号则停止调用该第三方程序库,否则继续调用第三方程序库。
进一步,所述多个第三方程序库进行互相调用的方法包括:
在软件平台继续调用第三方程序库后,软件平台适于根据第三方程序库中获取的用户回调子模块的列表和内部子模块的列表来调用第三方程序库;
若当前第三方程序库在运行的过程中需要调用其他第三方程序库的内部子模块,则通过软件平台在能力获取子模块中传递给当前第三方程序库的所依赖的子模块指针,使当前第三方程序库调用其他第三方程序库中的内部子模块;
在调用完成后软件平台通过调用第三方程序库中的释放子模块对所申请的资源进行释放。
第二方面,本发明还提供一种上述软件平台用第三方程序库函数互调方法用软件平台,包括:
软件平台头文件、软件平台API列表、软件平台版本号、用户逻辑回调子模块的列表、第三方程序库依赖的外部子模块列表、用户功能逻辑子模块和C++编译器。
第三方面,本发明还提供一种上述软件平台用第三方程序库函数互调方法用第三方程序库,包括:
初始化子模块、能力获取子模块、内部子模块和释放子模块。
第四方面,本发明还提供一种采用上述的软件平台用第三方程序库函数互调方法的互调***,包括:
构建模块,构建多个第三方程序库;
检验模块,检验第三方程序库的合法性;以及
调用模块,多个第三方程序库进行互相调用。
本发明的有益效果是,本发明通过构建多个第三方程序库;检验第三方程序库的合法性;以及多个第三方程序库进行互相调用,实现了通过软件平台实现一个通用的调用框架,使得第三方程序库在软件平台中注册的函数可以在所有加载的第三方程序库之间共享,这样在当前第三方程序库需要调用其他第三方程序库时,无需加载其他第三方程序库,只要使用软件平台分享给当前第三方程序库的包含其他第三方程序库的函数表,即可实现对其他第三方程序库的访问,当其他第三方程序库没有加载时,软件平台和当前第三方程序库都能得知这一情况,这使得当前第三方程序库能顺利加载并提供部分功能。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明所涉及的软件平台用第三方程序库函数互调方法的流程图;
图2是本发明所涉及的构建多个第三方程序库的流程图;
图3是本发明所涉及的多个第三方程序库进行互相调用的流程图;
图4是本发明所设计的互调***的原理框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
图1是本发明所涉及的软件平台用第三方程序库函数互调方法的流程图。
如图1所示,本实施例1提供了一种软件平台用第三方程序库函数互调方法,包括:构建多个第三方程序库;检验第三方程序库的合法性;以及多个第三方程序库进行互相调用,实现了通过软件平台实现一个通用的调用框架,使得第三方程序库在软件平台中注册的函数可以在所有加载的第三方程序库之间共享,这样在当前第三方程序库需要调用其他第三方程序库时,无需加载其他第三方程序库,只要使用软件平台分享给当前第三方程序库的包含其他第三方程序库的函数表,即可实现对其他第三方程序库的访问,当其他第三方程序库没有加载时,软件平台和当前第三方程序库都能得知这一情况,这使得当前第三方程序库能顺利加载并提供部分功能。
图2是本发明所涉及的构建多个第三方程序库的流程图。
如图2所示,在本实施例中,所述构建多个第三方程序库的方法包括:通过软件平台调用C++编译器构建第三方程序库,通过软件平台构建各第三方程序库,即通过软件平台构建各第三方程序库中的初始化子模块(含有初始化函数及对应的功能)、能力获取子模块(含有能力获取函数及对应的功能)和内部子模块(含有内部函数及对应的功能),以及在第三方程序库中构建释放子模块(含有释放函数及对应的功能);所述释放子模块适于在第三方程序库被卸载时自动释放其申请的资源;初始化子模块、能力获取子模块和释放子模块,是公开的子模块,可通过外部程序自动加载调用子模块中的函数,内部子模块中的函数外部不可见。
在本实施例中,所述通过软件平台构建初始化子模块的方法包括:通过软件平台内的软件平台头文件和软件平台API列表生成初始化子模块,以在初始化子模块调用完成后,第三方程序库获取软件平台提供的API列表中每个API的地址信息,也就能发挥其正常功能。
在本实施例中,所述通过软件平台构建能力获取子模块的方法包括:软件平台加载软件平台版本号、对应的用户逻辑回调子模块的列表和相应第三方程序库依赖外部子模块列表自动生成能力获取子模块,在外部程序调用能力获取子模块时获取该第三方程序库对应的软件平台的版本信息、用户逻辑回调子模块的列表信息、此第三方程序库依赖外部子模块信息和此第三方程序库所有的内部子模块信息。
在本实施例中,所述通过软件平台构建内部子模块的方法包括:根据软件平台的用户功能逻辑子模块生成内部子模块,内部子模块不对外开放接口,只能由外部程序(第三方程序库)通过调用能力获取函数来获得。
图3是本发明所涉及的多个第三方程序库进行互相调用的流程图。
如图3所示,在本实施例中,所述检验第三方程序库的合法性的方法包括:第三方程序库调用过程由软件平台和第三方程序库配合完成;通过加载动态链接库软件平台将第三方程序库加载至自身软件平台,软件平台调用第三方程序库的初始化子模块,以及软件平台调用第三方程序库的能力获取子模块,获取第三方程序库对应的软件平台的版本号、用户回调子模块的列表、第三方程序库所有的内部子模块的地址信息和函数参数信息,以及该第三方程序库所依赖的外部子模块信息;在能力获取函数调用过程中,软件平台同时向第三方程序库提供其所依赖的子模块指针(提供第三方程序库所依赖其他第三方程序库中内部函数的函数指针);若第三方程序库所依赖的外部子模块不存在,则软件平台向该第三方程序库提供空指针;在第三方程序库在调用过程中,根据是否是空指针判断是否存在该第三方程序库所依赖的其他第三方程序库;若为空指针则该第三方程序库所依赖的其他第三方程序库的内部子模块不生效,但该第三方程序库中的其他内部子模块的功能依然生效;软件平台将获取的三方程序库对应的软件平台的版本号与自身的版本号进行对比,若第三方程序库的版本号大于自身版本号则停止调用该第三方程序库,否则判断该第三方程序库合法(符合要求)继续调用第三方程序库。
在本实施例中,所述多个第三方程序库进行互相调用的方法包括:在软件平台继续调用第三方程序库后,软件平台适于根据第三方程序库中获取的用户回调子模块的列表和内部子模块的列表来调用第三方程序库;若当前第三方程序库在运行的过程中需要调用其他第三方程序库的内部子模块,则通过软件平台在能力获取子模块中传递给当前第三方程序库的所依赖的子模块指针,使当前第三方程序库调用其他第三方程序库中的内部子模块;在调用完成后软件平台通过调用第三方程序库中的释放子模块对所申请的资源进行释放;在软件平台调用第三方程序库时,不但可得知第三方程序库的所有依赖的其他第三方程序库的内部函数,还能通过软件平台自身向第三方程序库提供它们所依赖的函数指针,这使得第三方程序库之间存在相互依赖情况时,可以通过软件平台来提供依赖,而不需要手动修改第三方程序库;并且通过软件平台向第三方程序提供各类函数依赖,此方法可避免频繁修改第三方库以实现对其他第三方库的依赖,提高了第三方函数库的开发效率,降低了出错的可能性。
在本实施例中,通过软件平台构建了第三方程序库A和第三方程序库B,软件平台在调用第三方程序库A时,第三方程序库A需要依赖第三方程序库B的部分内部函数,则软件平台向第三方程序库A发送其所依赖的内部函数的函数指针,以从第三方程序库B中调用相应的内部函数。
在本实施例中,软件平台包括:软件平台头文件、包含API符号信息的软件平台API列表、软件平台版本号、用户通过软件平台生成的用户逻辑(以回调函数方式体现)、用户通过软件平台设计的自有逻辑(以普通函数体现)和、用户逻辑依赖的其他第三方程序库函数列表(以函数相关的符号信息体现);在软件平台构建可互调的第三方程序库的过程中,首先需要生成第三方程序库的初始化函数,该函数的源码基于软件平台头文件和包含API符号信息的软件平台API列表生成;其次需要生成能力获取函数,该函数的源码由软件平台自身版本号、用户逻辑回调函数的符号信息以及用户逻辑依赖的第三方程序库函数的符号信息构成;再次还需要生成释放函数,负责在第三方程序库卸载前释放所申请的资源;最后还需要生成一系列内部函数,这些内部函数为用户通过软件平台设计的自由逻辑;当所需要的函数都被生成后,软件平台调用C/C++编译器,将所生成的函数编译为第三方程序库可执行文件。
在本实施例中,软件平台还包括:动态链接库加载功能、函数调用功能、依赖函数管理功能、版本号比较功能和运行功能和停止功能;
在软件平台调用可互调的第三方程序库的过程中,首先需要通过动态链接库加载功能加载第三方程序库,加载成功后,通过函数调用功能调用第三方程序库的初始化函数,接着通过函数调用功能调用第三方程序库的能力获取函数,将编译进该能力获取函数的软件平台版本号、用户逻辑回调函数和用户逻辑所依赖的第三方函数符号信息读出,并输入至软件平台,软件平台将得知该第三方程序库的构建版本号和本软件平台的版本号关系,只有当版本号相同,或是本软件平台的版本号大于第三方程序库的构建版本号时,本软件平台才能继续调用第三方程序库,否则调用过程终止;同时软件平台的依赖函数管理功能还需要检测该第三方程序库的依赖函数是否在软件平台中存在,若存在则需要将依赖函数的首地址给到第三方程序库中,若不存在则需要将空指针给到第三方程序库;在版本号比较功能和依赖函数管理功能执行完成并返回可继续调用的标志后,软件平台执行运行程序功能,在运行过程中,第三方程序库的内部函数将被软件平台自由调用,以向软件平台提供各类功能;当第三方程序库需要调用其依赖的函数时,首先判断依赖函数是否是空指针,若不是空指针则继续调用,否则认为其依赖的库不存在,相关功能失效,当前调用过程返回失败;在不需要使用第三方程序库时,软件平台执行停止程序功能,该功能调用第三方程序库的释放函数,释放第三方程序库申请的资源后,调用过程结束。
具体的,在本实施例中以如下两个第三方程序库为例说明互调方法:通用的CRC16算法的第三方程序库;用于标定***用的第三方程序库,依赖通用的CRC16算法以对目标控制器进行解锁操作;这两个第三方程序库先后被软件平台加载,软件平台统一向用户提供CRC16算法的校验函数和标定***的标定函数。传统的通用的CRC16算法的第三方程序库需要在编译时导出外部程序依赖的API函数;传统的标定***用的第三方程序库由于依赖通用的CRC16算法的第三方程序库,其内部需要导入通用的CRC16算法的第三方程序库中的依赖函数,并在加载过程中首先加载通用的CRC16算法的第三方程序库。若通用的CRC16算法的第三方程序库不存在,则此标定***用的第三方程序库将加载失败,无法向软件平台用户提供任何功能;若通用的CRC16算法的第三方程序库中的函数发生变更,例如CRC16算法函数的参数由三个增加到了四个,而标定***用的第三方函数库由于某些原因未同步更新,在这种情况下,两个第三方程序库都能正常加载,但会在标定***用的第三方程序库调用CRC16程序库过程中发生崩溃。因此传统的软件平台程序库通过静态链接引用另一个库的方法,加上运行期缺乏接口定义检查的缺陷,将导致软件平台的可用性下降,出现问题将不容易排查。本实施例中给出的软件平台采用了不同的方法,它的工作流程如下:CRC16第三方程序库和标定***用第三方程序库将外部程序依赖的API均作为内部函数,而并不导出任何API函数;软件平台先后加载CRC16第三方程序库和标定***用第三方程序库;软件平台调用这两个第三方程序库的能力获取函数,得到每个程序库的内部函数列表以及每个函数的定义信息,包括函数地址信息,参数信息等等;软件平台调用这两个第三方程序库的能力获取函数,得到每个程序库依赖别的程序库的函数列表以及每个函数的定义信息,包括函数地址信息,参数信息等等;软件平台分析每个第三方程序库的依赖函数,检测到标定***用的第三方程序库依赖CRC16第三方程序库,于是将标定***用的第三方程序库中的依赖函数地址信息赋值为CRC16第三方程序库的相应的函数地址信息。软件平台分析每个第三方程序库的依赖函数的函数定义信息,包括参数信息等,若发现CRC16第三方程序库的内部API函数定义与标定***用的第三方程序库的对应依赖函数定义不同,则向用户发出警告,并禁止标定***用的第三方程序库的运行。在检验第三方程序库的依赖关系通过后,软件平台可正常调用这两个第三方程序库,向用户提供服务。
实施例2
在实施例1的基础上,本实施例2还提供一种实施例1中软件平台用第三方程序库函数互调方法用软件平台,包括:软件平台头文件、软件平台API列表、软件平台版本号、用户逻辑回调子模块的列表、第三方程序库依赖的外部子模块列表、用户功能逻辑子模块和C++编译器。
在本实施例中,软件平台包含的各子模块和功能在实施例1中已经详细描述,在本实施例中不再赘述。
实施例3
在实施例1的基础上,本实施例3还提供一种实施例1中软件平台用第三方程序库函数互调方法用第三方程序库,包括:初始化子模块、能力获取子模块、内部子模块和释放子模块。
在本实施例中,第三方程序库包含的各子模块和功能在实施例1中已经详细描述,在本实施例中不再赘述。
实施例4
图4是本发明所设计的互调***的原理框图。
在实施例1的基础上,本实施例4还提供一种采用实施例1中的软件平台用第三方程序库函数互调方法的互调***,包括:构建模块,构建多个第三方程序库;检验模块,检验第三方程序库的合法性;以及调用模块,多个第三方程序库进行互相调用。
在本实施例中,各模块的具体功能在实施例1中已经详细描述,在本实施例中不再赘述。
实施例5
在上述实施例的基础上,本实施例5还提供一种调用装置,包括:软件平台和若干第三方程序库;所述软件平台适于构建第三方程序库,并调用第三方程序库;以及第三方程序库可以通过软件平台实现互相调用。
在本实施例中,所述软件平台和第三方程序库的功能在上述实施例中已经详细描述,在本实施例中不再赘述。
综上所述,本发明通过构建多个第三方程序库;以及多个第三方程序库进行互相调用,实现了通过软件平台实现一个通用的调用框架,使得第三方程序库在软件平台中注册的函数可以在所有加载的第三方程序库之间共享,这样在当前第三方程序库需要调用其他第三方程序库时,无需加载其他第三方程序库,只要使用软件平台分享给当前第三方程序库的包含其他第三方程序库的函数表,即可实现对其他第三方程序库的访问,当其他第三方程序库没有加载时,软件平台和当前第三方程序库都能得知这一情况,这使得当前第三方程序库能顺利加载并提供部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
Claims (10)
1.一种软件平台用第三方程序库函数互调方法,其特征在于,包括:
构建多个第三方程序库;
检验第三方程序库的合法性;以及
多个第三方程序库进行互相调用。
2.如权利要求1所述的软件平台用第三方程序库函数互调方法,其特征在于,
所述构建多个第三方程序库的方法包括:
通过软件平台构建各第三方程序库,即通过软件平台构建各第三方程序库中的初始化子模块、能力获取子模块和内部子模块,以及在第三方程序库中构建释放子模块;
所述释放子模块适于在第三方程序库被卸载时自动释放其申请的资源。
3.如权利要求2所述的软件平台用第三方程序库函数互调方法,其特征在于,
所述通过软件平台构建初始化子模块的方法包括:
通过软件平台内的软件平台头文件和软件平台API列表生成初始化子模块,以在初始化子模块调用完成后,第三方程序库获取软件平台提供的API列表中每个API的地址信息。
4.如权利要求3所述的软件平台用第三方程序库函数互调方法,其特征在于,
所述通过软件平台构建能力获取子模块的方法包括:
软件平台加载软件平台版本号、对应的用户逻辑回调子模块的列表和相应第三方程序库依赖外部子模块列表生成能力获取子模块,在外部程序调用能力获取子模块时获取该第三方程序库对应的软件平台的版本信息、用户逻辑回调子模块的列表信息、此第三方程序库依赖外部子模块信息和此第三方程序库所有的内部子模块信息。
5.如权利要求4所述的软件平台用第三方程序库函数互调方法,其特征在于,
所述通过软件平台构建内部子模块的方法包括:
根据软件平台的用户功能逻辑子模块生成内部子模块。
6.如权利要求5所述的软件平台用第三方程序库函数互调方法,其特征在于,
所述检验第三方程序库的合法性的方法包括:
将第三方程序库加载至软件平台,软件平台调用第三方程序库的初始化子模块,以及软件平台调用第三方程序库的能力获取子模块,获取第三方程序库对应的软件平台的版本号、用户回调子模块的列表、第三方程序库所有的内部子模块的地址信息和函数参数信息,以及该第三方程序库所依赖的外部子模块信息;
软件平台向第三方程序库提供其所依赖的子模块指针;
若第三方程序库所依赖的外部子模块不存在,则软件平台向该第三方程序库提供空指针;
在第三方程序库在调用过程中,根据是否是空指针判断是否存在该第三方程序库所依赖的其他第三方程序库;
若为空指针则该第三方程序库所依赖的其他第三方程序库的内部子模块不生效,但该第三方程序库中的其他内部子模块的功能依然生效;
软件平台将获取的三方程序库对应的软件平台的版本号与自身的版本号进行对比,若第三方程序库的版本号大于自身版本号则停止调用该第三方程序库,否则继续调用第三方程序库。
7.如权利要求6所述的软件平台用第三方程序库函数互调方法,其特征在于,
所述多个第三方程序库进行互相调用的方法包括:
在软件平台继续调用第三方程序库后,软件平台适于根据第三方程序库中获取的用户回调子模块的列表和内部子模块的列表来调用第三方程序库;
若当前第三方程序库在运行的过程中需要调用其他第三方程序库的内部子模块,则通过软件平台在能力获取子模块中传递给当前第三方程序库的所依赖的子模块指针,使当前第三方程序库调用其他第三方程序库中的内部子模块;
在调用完成后软件平台通过调用第三方程序库中的释放子模块对所申请的资源进行释放。
8.一种如权利要求1-7任一项所述软件平台用第三方程序库函数互调方法用软件平台,其特征在于,包括:
软件平台头文件、软件平台API列表、软件平台版本号、用户逻辑回调子模块的列表、第三方程序库依赖的外部子模块列表和用户功能逻辑子模块。
9.一种如权利要求1-7任一项所述软件平台用第三方程序库函数互调方法用第三方程序库,其特征在于,包括:
初始化子模块、能力获取子模块、内部子模块和释放子模块。
10.一种采用如权利要求1-7任一项所述的软件平台用第三方程序库函数互调方法的互调***,其特征在于,包括:
构建模块,构建多个第三方程序库;
检验模块,检验第三方程序库的合法性;以及
调用模块,多个第三方程序库进行互相调用。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147972.XA CN113867720A (zh) | 2021-09-29 | 2021-09-29 | 软件平台用第三方程序库函数互调方法及互调*** |
PCT/CN2022/111298 WO2023051039A1 (zh) | 2021-09-29 | 2022-08-10 | 软件平台用第三方程序库函数互调方法及互调*** |
KR1020237011067A KR20230073230A (ko) | 2021-09-29 | 2022-08-10 | 소프트웨어 플랫폼용 제3자 라이브러리 함수의 상호 호출 방법 및 상호 호출 시스템 |
EP22874435.5A EP4318208A1 (en) | 2021-09-29 | 2022-08-10 | Third-party program library function mutual call method for software platform, and mutual call system |
CA3206540A CA3206540A1 (en) | 2021-09-29 | 2022-08-10 | Software platform-specific mutual calling method for functions of third-party program libraries, and mutual calling system |
JP2023540782A JP2024502587A (ja) | 2021-09-29 | 2022-08-10 | ソフトウェアプラットフォーム用第三者ライブラリ関数の相互呼び出し方法及び相互呼び出しシステム |
US18/267,106 US20240118888A1 (en) | 2021-09-29 | 2022-08-10 | Software platform-specific mutual calling method for functions of third-party program libraries, and mutual calling system |
MX2023010700A MX2023010700A (es) | 2021-09-29 | 2022-08-10 | Metodo de llamada mutua especifico de la plataforma de software para funciones de bibliotecas de programas de terceros y sistema de llamada mutua. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147972.XA CN113867720A (zh) | 2021-09-29 | 2021-09-29 | 软件平台用第三方程序库函数互调方法及互调*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113867720A true CN113867720A (zh) | 2021-12-31 |
Family
ID=78992448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111147972.XA Pending CN113867720A (zh) | 2021-09-29 | 2021-09-29 | 软件平台用第三方程序库函数互调方法及互调*** |
Country Status (8)
Country | Link |
---|---|
US (1) | US20240118888A1 (zh) |
EP (1) | EP4318208A1 (zh) |
JP (1) | JP2024502587A (zh) |
KR (1) | KR20230073230A (zh) |
CN (1) | CN113867720A (zh) |
CA (1) | CA3206540A1 (zh) |
MX (1) | MX2023010700A (zh) |
WO (1) | WO2023051039A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023051039A1 (zh) * | 2021-09-29 | 2023-04-06 | 上海同星智能科技有限公司 | 软件平台用第三方程序库函数互调方法及互调*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101182534B1 (ko) * | 2006-10-31 | 2012-09-12 | 에스케이플래닛 주식회사 | 플랫폼 라이브러리내 상호 에이피아이 호출기능이 구비된단말장비, dsl 모듈 생성방법 및 상호 에이피아이호출방법 |
CN107766164A (zh) * | 2017-11-17 | 2018-03-06 | 深圳市泉眼网络科技有限公司 | 数据调用方法及装置 |
CN110795174B (zh) * | 2019-10-31 | 2023-03-14 | 成都西加云杉科技有限公司 | 一种应用程序接口调用方法、装置、设备及可读存储介质 |
CN113867719A (zh) * | 2021-09-29 | 2021-12-31 | 上海同星智能科技有限公司 | 软件平台用第三方程序库函数拆解调用方法及调用*** |
CN113867720A (zh) * | 2021-09-29 | 2021-12-31 | 上海同星智能科技有限公司 | 软件平台用第三方程序库函数互调方法及互调*** |
-
2021
- 2021-09-29 CN CN202111147972.XA patent/CN113867720A/zh active Pending
-
2022
- 2022-08-10 WO PCT/CN2022/111298 patent/WO2023051039A1/zh active Application Filing
- 2022-08-10 MX MX2023010700A patent/MX2023010700A/es unknown
- 2022-08-10 CA CA3206540A patent/CA3206540A1/en active Pending
- 2022-08-10 KR KR1020237011067A patent/KR20230073230A/ko unknown
- 2022-08-10 US US18/267,106 patent/US20240118888A1/en active Pending
- 2022-08-10 EP EP22874435.5A patent/EP4318208A1/en active Pending
- 2022-08-10 JP JP2023540782A patent/JP2024502587A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023051039A1 (zh) * | 2021-09-29 | 2023-04-06 | 上海同星智能科技有限公司 | 软件平台用第三方程序库函数互调方法及互调*** |
Also Published As
Publication number | Publication date |
---|---|
WO2023051039A1 (zh) | 2023-04-06 |
MX2023010700A (es) | 2023-09-19 |
EP4318208A1 (en) | 2024-02-07 |
KR20230073230A (ko) | 2023-05-25 |
US20240118888A1 (en) | 2024-04-11 |
CA3206540A1 (en) | 2023-04-06 |
JP2024502587A (ja) | 2024-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019536153A (ja) | スマート・コントラクト処理方法及び装置 | |
CN109739573A (zh) | 实现api接口调用的处理方法及装置、实现api接口的*** | |
CN113867719A (zh) | 软件平台用第三方程序库函数拆解调用方法及调用*** | |
US8645766B2 (en) | Serialized error injection into a function under test | |
CN111506500B (zh) | 内存泄露检测方法、装置、电子设备及可读存储介质 | |
US9779014B2 (en) | Resilient mock object creation for unit testing | |
CN113867720A (zh) | 软件平台用第三方程序库函数互调方法及互调*** | |
CN112506681B (zh) | 参数调用方法、装置、电子设备及存储介质 | |
CN112286594A (zh) | 对象序列化和反序列化方法及设备、电子设备和介质 | |
US8010950B1 (en) | Method and apparatus for testing a binding application programming interface | |
EP4025994A1 (en) | Enhanced virtual machine image management system | |
CN109710415B (zh) | 调用弹窗控件的处理方法、装置及电子设备 | |
CN114791884A (zh) | 测试环境的构建方法、装置、存储介质及电子设备 | |
CN116431137A (zh) | 跨开发框架的组件转换方法、处理***和组件转换装置 | |
US20030009751A1 (en) | System and method for determining the root cause of a failure | |
CN114153512A (zh) | 资源加载方法、装置、电子设备和存储介质 | |
JP2016029547A (ja) | 実行モジュール生成装置、及び電子制御装置 | |
CN109800057B (zh) | 对象调用方法、设备和存储介质 | |
CN113126974B (zh) | 代码生成/执行方法、装置、设备、存储介质 | |
US20240192872A1 (en) | Method and system for tracking memory usage | |
CN117827632A (zh) | 测试方法、装置及存储介质 | |
CN114461296A (zh) | 基于Openresty的服务平台开发及访问方法 | |
CN115373647A (zh) | 一种动态添加异步并返回最后添加异步结果的方法及装置 | |
WO2023219692A1 (en) | Externally-initiated runtime type extension | |
CN117807090A (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 | ||
CB02 | Change of applicant information |
Address after: Room 609, No. 4801, Cao'an Highway, Jiading District, Shanghai, 200000 Applicant after: Shanghai Tongxing Intelligent Technology Co.,Ltd. Address before: 201804 room 904, Jiading sub Park, National University Science Park, Tongji University, 4801 Cao'an Road, Jiading District, Shanghai Applicant before: Shanghai Tongxing Intelligent Technology Co.,Ltd. |
|
CB02 | Change of applicant information |