[发明专利]用于预编译器的代码转换方法、装置、介质及设备在审
申请号: | 202111356820.0 | 申请日: | 2021-11-16 |
公开(公告)号: | CN114047922A | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 马贤迪;宝腾飞;李清硕;乔海军;刘真 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/51 |
代理公司: | 北京英创嘉友知识产权代理事务所(普通合伙) 11447 | 代理人: | 魏嘉熹 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 预编 代码 转换 方法 装置 介质 设备 | ||
1.一种用于预编译器的代码转换方法,其特征在于,所述方法包括:
根据接收的第三方库和预编译器中预设的签名表示,确定所述第三方库对应的包装库的库名称和库链接地址,其中,所述包装库中包含所述第三方库的链接地址,所述预编译器用于将第一代码语言下的第一代码转换至第二代码语言,以获得第二代码;
根据所述库名称和所述库链接地址,生成映射关系并存储所述映射关系至映射表中;
根据所述第三方库的所述库名称和所述映射表,生成所述第三方库在所述第一代码语言下对应的接口代码,并将所述接口代码添加至接口文件;
根据所述第二代码语言和所述接口文件对所述第一代码进行转换,以获得所述第二代码。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第三方库对应的接口代码中添加属性标识,其中,所述属性标识用于表示所述接口代码对应的库为第三方库;
所述根据所述第二代码语言和所述接口文件对所述第一代码进行转换,以获得所述第二代码,包括:
若根据所述接口文件确定所述第一代码的库代码中包含所述属性标识,获取所述库代码对应的目标库的库签名信息;
根据所述库签名信息和所述第二代码语言对应的库调用代码模板,生成第二代码语言下对所述目标库进行调用的调用代码,并将所述调用代码作为与所述第一代码中的库代码对应的第二代码。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一代码语言下,基于所述库名称和所述接口文件中的所述映射表确定所述库链接地址;
根据所述库链接地址路由至所述包装库,并根据所述包装库中的所述第三方库的链接地址路由至所述第三方库,根据第一代码语言下的调用参数调用所述第三方库。
4.根据权利要求3所述的方法,其特征在于,所述根据第一代码语言下的调用参数调用所述第三方库,包括:
根据所述第一代码语言和所述第三方库的代码语言之间的类型转换关系,将所述第一代码语言下的调用参数的类型转换成所述第三方库的代码语言下的参数类型,以获得所述第三方库的目标调用参数,其中,所述第一代码语言与所述第三方库的代码语言不同;
根据所述目标调用参数调用所述第三方库。
5.根据权利要求1所述的方法,其特征在于,所述根据接收的第三方库和预编译器中预设的签名表示,确定所述第三方库对应的包装库的库名称和库链接地址,包括:
根据所述预设的签名表示,基于模板元编程生成所述包装库的库名称,并获得所述包装库的库链接地址;
将所述第三方库的链接地址存储在所述包装库中。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述映射表基于全局单例模式的无序关联容器实现。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述第一代码语言为Python,所述第二代码语言为C++,所述第三方库包括基于C++实现的函数库和/或类库。
8.一种用于预编译器的代码转换装置,其特征在于,所述装置包括:
第一确定模块,用于根据接收的第三方库和预编译器中预设的签名表示,确定所述第三方库对应的包装库的库名称和库链接地址,其中,所述包装库中包含所述第三方库的链接地址,所述预编译器用于将第一代码语言下的第一代码转换至第二代码语言,以获得第二代码;
第一生成模块,用于根据所述库名称和所述库链接地址,生成映射关系并存储所述映射关系至映射表中;
第二生成模块,用于根据所述第三方库的所述库名称和所述映射表,生成所述第三方库在所述第一代码语言下对应的接口代码,并将所述接口代码添加至接口文件;
转换模块,用于根据所述第二代码语言和所述接口文件对所述第一代码进行转换,以获得所述第二代码。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-7中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现权利要求1-7中任一项所述方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111356820.0/1.html,转载请声明来源钻瓜专利网。