SDK导出Python接口的方法、装置、设备及介质制造方法及图纸

技术编号:36707218 阅读:9 留言:0更新日期:2023-03-01 09:30
本发明专利技术公开了SDK导出Python接口的方法、装置、设备及介质,该方法包括根据SDK的C++接口创建Python的接口类并与其进行绑定,生成关联Python类型的STL标准模板库列表和C++类列表;根据STL标准模板库列表进行STL标准模板库绑定;根据C++类列表进行C++接口参数类绑定;编译所有生成的文件并链接为库文件输出。本发明专利技术能够提高SDK导出Python接口的效率,减轻开发工作量,不易出错,且后期添加接口或维护也比较方便。比较方便。比较方便。

【技术实现步骤摘要】
SDK导出Python接口的方法、装置、设备及介质


[0001]本专利技术属于软件开发
,涉及SDK导出Python接口的方法、装置、设备及介质。

技术介绍

[0002]在电脑、服务器或其他设备上,通过SDK(软件开发工具包)接口调用,可方便地实现各种SDK中提供的功能。目前,使用Python编程语言的用户群体非常大,对该语言进行支持,可方便用户利用SDK的Python接口使用SDK提供的功能。通常,支持SDK的Python接口方法是基于已开放的其他语言,如C++的接口,对这些接口逐一进行手动编码绑定,无疑这个工作量是巨大的,耗时费力,且容易出错。

技术实现思路

[0003]专利技术目的:本专利技术的目的是提出一种SDK导出Python接口的方法、装置、设备及介质,能够提高SDK导出Python接口的效率,避免手动编程过程中容易出错的问题。
[0004]技术方案:本专利技术第一方面,提供一种SDK导出Python接口的方法,包括:
[0005]根据SDK的C++接口创建Python的接口类并与其进行绑定,生成关联Python类型的STL标准模板库列表和C++类列表;
[0006]根据STL标准模板库列表进行STL标准模板库绑定;
[0007]根据C++类列表进行C++接口参数类绑定;
[0008]编译所有生成的文件并链接为库文件输出。
[0009]进一步地,在接口绑定时,对于使用引用作为参数的接口,将返回值设为tuple类型,将引用参数作为tuple中的一个成员返回。
[0010]进一步地,在进行STL标准模板库绑定时,遍历生成的STL标准模板库列表,针对每一个模板类型创建一个单独的模板文件,将STL标准模板库导出。每个类创建一个文件可以避免编译过程对资源的过度消耗。
[0011]进一步地,在进行C++接口参数类绑定时,遍历生成的C++类列表,针对每一个C++类分别创建代码文件,将C++类导出。每个类创建一个文件可以避免编译过程对资源的过度消耗。
[0012]以上对每一个STL模板类型创建单独的模板文件,每一个C++类分别创建代码文件,可以避免编译过程对资源的过度消耗导致的内存不足问题,同时可以在某些类发生变化时单独编译对应的文件,实现增量编译,减少编译时间。
[0013]进一步地,所有生成的文件都存放在SDK的目录下,不对原C++中的接口或类作修改,这样可避免对原有代码的修改及维护。
[0014]进一步地,编译所有生成的文件并链接为库文件输出,包括:对所有生成的文件进行编译并静态链接为静态库文件,随后从该静态库文件和所有依赖的静态库文件中提取所有的.o对象文件,最后将所有.o文件通过动态链接的方式链接为.so动态链接库。
[0015]本专利技术第二方面提供一种SDK导出Python接口的装置,包括:
[0016]接口绑定模块,根据SDK的C++接口创建Python的接口类并与其进行绑定;
[0017]STL标准模板库绑定模块,用于生成关联Python类型的STL标准模板库列表,根据该STL标准模板库列表进行STL标准模板库绑定;
[0018]C++接口参数类绑定模块,用于生成关联Python类型的C++类列表,根据该C++类列表进行C++接口参数类绑定;
[0019]编译及库文件生成模块,用于编译所有生成的文件并链接为库文件输出。
[0020]本专利技术第三方面提供一种SDK导出Python接口的设备,包括处理器和存储器;
[0021]所述存储器,用于存储计算机程序;
[0022]所述处理器,用于执行所述计算机程序以实现上述第一方面的方法。
[0023]本专利技术第四方面提供一种计算机可读存储介质,用于存储计算机程序,所述计算机程序被计算机执行时,实现上述第一方面的方法。
[0024]本专利技术第五方面提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行上述第一方面的方法。
[0025]有益效果:本专利技术与现有技术相比,具有如下显著优点:能够提高SDK导出Python接口的效率,减轻开发工作量,不易出错,且后期添加接口或维护也比较方便。
附图说明
[0026]为了更清楚地说明本专利技术实施例的技术方案,下面对本专利技术实施例中所需要使用的附图作简单介绍,显而易见地,下面所描述的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]图1是SDK导出Python接口的装置模块结构图;
[0028]图2是SDK文件夹目录示意图;
[0029]图3是编译及库文件生成流程框图。
具体实施方式
[0030]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术的保护范围。
[0031]本申请实施例提供的一种SDK导出Python接口的方法,其基于现有C++语言的调用接口,首先将现有C++接口绑定并导出为Python可以使用的接口;随后把接口中关联的STL标准模板库、C++接口参数类也绑定导出为Python中的类,方便Python用户的使用;最后将上述生成的代码编译,从静态编译库文件中提取模板文件,并动态编译为.so格式的Python库。
[0032]下面对该SDK导出Python接口的方法作具体介绍。
[0033]图2所示为SDK文件夹目录示意图,包括头文件目录21、库文件目录22、STL标准模板库绑定目录23、C++接口参数类绑定目录24和C++源代码目录25。
[0034]SDK导出Python接口的方法,包括:
[0035]接口绑定,根据SDK的C++接口创建Python的接口类并与其进行绑定,生成关联
Python类型的STL标准模板库列表,生成关联Python类型的C++类列表;其中,生成关联Python类型的STL标准模板库列表,是将在C++中定义的,如vector、map等类型,绑定并导出为Python类型;生成关联Python类型的C++类列表,是将将接口中关联的C++类自动绑定并导出为Python类型。
[0036]默认的C++接口以及SDK核心代码在C++源代码目录25下,软件程序在找到所有待导出的接口后,根据Boost.Python、pybind11等第三方Python的绑定库的格式要求,创建Python函数接口的绑定。本实施例中,使用pybind11。
[0037]在接口绑定时,对于使用引用作为参数的接口,由于Python对引用参数并不支持,为了将该引用能够传递到Python中使用,返回值设为tuple类型,将引用参数作为tuple中的一个成员返回,这样Python就可以从tuple中获得该参数的结果值。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.SDK导出Python接口的方法,其特征在于,包括:根据SDK的C++接口创建Python的接口类并与其进行绑定,生成关联Python类型的STL标准模板库列表和C++类列表;根据STL标准模板库列表进行STL标准模板库绑定;根据C++类列表进行C++接口参数类绑定;编译所有生成的文件并链接为库文件输出。2.根据权利要求1所述的方法,其特征在于,在接口绑定时,对于使用引用作为参数的接口,将返回值设为tuple类型,将引用参数作为tuple中的一个成员返回。3.根据权利要求1所述的方法,其特征在于,在进行STL标准模板库绑定时,遍历生成的STL标准模板库列表,针对每一个模板类型创建一个单独的模板文件,将STL标准模板库导出。4.根据权利要求1所述的方法,其特征在于,在进行C++接口参数类绑定时,遍历生成的C++类列表,针对每一个C++类分别创建代码文件,将C++类导出。5.根据权利要求1所述的方法,其特征在于,所有生成的文件都存放在SDK的目录下,不对原C++中的接口或类作修改。6.根据权利要求1或5所述的方法,其特征在于,编译所有生成的文件并链接为库文件输出,包括:对所有生成的文件进行编译并静态链...

【专利技术属性】
技术研发人员:刘生林巧赵迎瑞李松领何杏兴
申请(专利权)人:南京熊猫电子装备有限公司
类型:发明
国别省市:

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

1