CN114546515B - 动态加载静态库的模块、固件及设备和C库转Lua库的方法 - Google Patents

动态加载静态库的模块、固件及设备和C库转Lua库的方法 Download PDF

Info

Publication number
CN114546515B
CN114546515B CN202210065651.3A CN202210065651A CN114546515B CN 114546515 B CN114546515 B CN 114546515B CN 202210065651 A CN202210065651 A CN 202210065651A CN 114546515 B CN114546515 B CN 114546515B
Authority
CN
China
Prior art keywords
library
lua
function
static library
static
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.)
Active
Application number
CN202210065651.3A
Other languages
English (en)
Other versions
CN114546515A (zh
Inventor
吴永
朱汪斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Hezhou Communication Technology Co ltd
Original Assignee
Shanghai Hezhou Communication Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Hezhou Communication Technology Co ltd filed Critical Shanghai Hezhou Communication Technology Co ltd
Priority to CN202210065651.3A priority Critical patent/CN114546515B/zh
Publication of CN114546515A publication Critical patent/CN114546515A/zh
Application granted granted Critical
Publication of CN114546515B publication Critical patent/CN114546515B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提出了Lua虚拟机更加便捷地加载C库的技术方案,将C库以Lua脚本资源的形式加载到Lua虚拟机中,然后解析并运行。Lua虚拟机只需要将该静态库中的外部函数处理成Lua的function类型传给该Lua脚本即可。该静态库不需要和该Lua脚本进行链接,保证了该静态库可以采用动态链接。同时,因将各个目标文件种的各字段合并到了一起,方便解析,有效地减少了RAM内存空间的消耗。因为能将C库方便地合成Lua组件库,用户可自由下载,方便地发展出具有各种功能的Lua组件库,有利于Lua语言生态的可持续发展,并能够保证接口库的私密性,保护源码。同时,因能共享打包好的接口库,更有利于Lua语言的开发。最后,解决了某些平台因编译器不支持动态库,无法使用动态链接方案问题。

Description

动态加载静态库的模块、固件及设备和C库转Lua库的方法
技术领域
本发明涉及专门程序的装载的技术领域,尤其是小型嵌入式系统动态地加载静态库的技术领域。
背景技术
库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。库文件分为静态库和动态库。
静态库的代码,在程序进行编译链接的时候,就被链接到可执行文件当中了。编译链接后生成的可执行程序,在运行的时候将不再需要静态库,没有外部依赖性。而且,静态库在不同的程序之间是不能共享的。因此,使用静态库生成的可执行程序一般比较大。如果有很多不同功能的静态库都需要链接,那最终生成的可执行程序就会非常大。而小型嵌入式设备的空间通常都是非常有限的,难以容纳过于庞大的程序。如果这些功能需要服务不同的产品,那通常只能发布多个软件版本,维护成本较高。
相对于静态库的缺点,就有了动态库。动态库即动态链接库。与静态库不同的是,动态库在编译时并不会被链接到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。动态库的优点是,不需要链接到目标程序中,而且同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库),因此目标程序相对来说会比较小。同时,运行时才载入的特性,使得动态库可以随时被替换升级,而不需要重新编译代码,可维护性高,维护成本较低。但是,由于动态库的生成依赖编译器,在编译动态库的时候需要支持-fPIC、-shared等参数,然而大部分小型嵌入式系统的编译器都不支持动态库的生成。
简言之,小型嵌入式系统的可执行文件,一般都使用RTOS(嵌入式实时操作系统),不具备应用动态加载功能。用户如果想要增加功能,需要拿到该固件对应的源码和需要增加的静态库文件,才可以和用户的应用代码一起编译成新的固件。
综上所述,现有技术遇到了以下问题:
1)多数小型嵌入式系统的编译器不支持动态库,因此无法使用动态链接。
2)对小型嵌入式系统而言,使用静态库会导致目标程序体积过大,内存空间占用过多。
3)使用静态库需要发布的软件版本过多,造成维护成本较高。
发明内容
本发明的技术方案解决的问题是:
1)使用不同的功能服务不同的产品,只能发布多个软件版本,维护成本较高。
2)小型嵌入式系统(如通信模组)内存空间有限,在使用会导致目标程序体积过大的静态库时,受到了限制。
3)多数小型嵌入式系统的编译器不支持动态库,因此无法使用动态链接。
第一方面,本发明的实施例提出一种动态加载静态库的模块,该模块包括:
函数地址映射表,用于存储底层接口函数的实际地址;该底层接口函数与函数指针一一对应。
静态库动态链接接口dl.open,由Lua脚本直接调用,用于根据该Lua脚本传入的加载路径在脚本区域内找到需要动态链接的该静态库,并解析该静态库;该解析包括:计算静态库中可加载的段,并映射到分配好的内存中,同时进行符号重定向,然后传回解析参数;该符号重定向包括变量重定向,函数指针重定向和互调函数重定向;该变量重定向,是根据该内存中的.text段中的指令集类型将变量的虚拟地址替换为实际地址;该函数指针重定向,是指将内存中.text段中的该函数指针的该虚拟地址替换为该函数地址映射表中的该实际地址,以调用该底层接口函数;该互调函数重定向,是指将互调函数的该虚拟地址替换为该互调函数加载入该内存后的该实际地址,该互调函数是指用户写在该静态库里的用于相互调用的函数;该解析参数包括该静态库的该加载路径和Lua组件库的入口函数。
静态库资源释放接口dl.close,用于根据该静态库动态链接接口dl.open传入的该句柄,对该静态库分配到的该内存进行释放。
第二方面,本发明的实施例提出一种动态加载静态库的系统固件,该系统固件包括如第一方面中所述的模块。
第三方面,本发明的实施例提出一种动态加载静态库的设备,该设备采用了如第二方面中所述的系统固件。
第四方面,本发明的实施例提出一种采用了如第一方面所述的模块的C库转Lua库的方法,该方法包括:
将C库文件编译为目标文件。
使用打包命令,将该目标文件打包为静态库文件。
通过该Lua脚本调用该静态库动态链接接口dl.open;该Lua脚本传入该静态库动态链接接口dl.open需要的该静态库的加载路径和Lua组件库的入口函数,加载成功后自动执行该Lua组件库的该入口函数。
调用该静态库资源释放接口dl.close。
本发明提供的技术方案的有益效果是:
1)提出一种动态加载静态库的模块,不用关心用户的调用逻辑,也不需要关心用户接口的命名,所有的操作都能交给Lua虚拟机处理,Lua虚拟机只需要将该静态库中的外部函数处理成Lua的function类型传给该Lua脚本即可。
2)采用了编译器的ld-r指令打包该静态库,该静态库不需要和主程序进行链接,保证了该静态库可以采用动态链接。同时,这样的打包方式会将各个目标文件中的.TEXT.DATA.REL等字段合并到一起,方便解析,能够有效地减少RAM内存空间的消耗,解决了使用静态库会导致目标程序体积过大的问题。而如果采用ar打包,会有大量的字段,考虑到字段都需要对齐,必定会浪费更多的空间。
3)因为能够将C库方便地合成Lua接口库,用户可以自由选择下载,方便地发展出具有各种Lua接口功能的组件库,有利于Lua语言生态的可持续发展,并能够保证接口库的私密性,保护源码。同时,因能共享打包好的接口库,更有利于Lua语言的开发。
4)解决了某些平台因编译器不支持动态库,无法使用动态链接方案问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的采用了如第一方面所述的模块的C库转Lua库的方法一个具体实施例的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。本领域技术人员应当理解的是,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员可以进行任何适当的修改或变型,从而获得所有其它实施例。
本发明提出了Lua虚拟机更加便捷地加载C库的技术方案,将C库以Lua脚本资源的形式加载到Lua虚拟机中,然后解析并运行。下面,如图1所示,以加载user.lib静态库文件为例,阐释使用本发明提供的技术方案的实施方式。
首先,用户需要编写静态库文件和相关的Lua脚本,并将该静态库文件和该Lua脚本一起打包下载到设备中。用户可以使用C/C++语言编写该静态库文件,将C接口注册到Lua虚拟机中,提供给该Lua脚本使用。接着,使用交叉编译器将该静态库文件编译成目标文件,即后缀名为.o的文件。然后,通过交叉编译器的ld-r命令将该目标文件打包成静态库文件。在Windows操作系统下,该静态库文件是.lib文件,在Linux下该静态库文件是.a文件,即在不同的操作系统下,该静态库文件的类型不同,但其作用是相同的。用户还需要编写该Lua脚本,该Lua脚本可以直接使用静态库加载的Lua库。用户只需要将已完成的该静态库文件和该Lua脚本文件打包并下载到设备的脚本空间中。当然,该设备并不需要是一个实体,也可以是一个方便用户调试的虚拟设备。因此采用了该编译器的ld-r指令打包该静态库,该静态库不需要和主程序进行链接,保证了该静态库可以采用动态链接。同时,这样的打包方式会将各个目标文件中的.TEXT.DATA.REL等字段合并到一起,方便解析,能够有效地减少RAM内存空间的消耗,解决了使用静态库会导致目标程序体积过大的问题。而如果采用ar打包,会有大量的字段,考虑到字段都需要对齐,必定会浪费更多的空间。
因为能够将C库方便地合成Lua接口库,用户可以自由选择下载,方便地发展出具有各种Lua接口功能的组件库,有利于Lua语言生态的可持续发展,并能够保证接口库的私密性,保护源码。同时,因能共享打包好的接口库,更有利于Lua语言的开发。
上述过程,对应了本发明提供的第四方面的部分内容,第四方面的其余内容将在后文中予以阐释。第四方面的内容具体如下:
第四方面,本发明的实施例提出一种采用了如第一方面所述的模块的C库转Lua库的方法,该方法包括:
将C库文件编译为目标文件。
使用打包命令,将该目标文件打包为静态库文件。
通过该Lua脚本调用该静态库动态链接接口dl.open;该Lua脚本传入该静态库动态链接接口dl.open需要的该静态库的加载路径和Lua组件库的入口函数,加载成功后自动执行该Lua组件库的该入口函数。
调用该静态库资源释放接口dl.close。
接着,该静态库文件和该Lua脚本就在该设备中运行了,如图1所示。当然,该流程图只列出了其中的主要环节。为了保证编译能够通过,顺利地实现动态加载静态库的功能,首先,需要将该底层接口函数定义为该函数指针,使得用户可以通过调用该函数指针来调用该底层接口函数。该底层接口函数与函数指针一一对应。接着,需要在设备的固件中添加该函数地址映射表以存储底层接口函数的实际地址。这样,用户就能通过调用该函数指针形式的接口自由开发Lua组件库,该Lua库为上层的该Lua脚本提供支持。在该Lua脚本中可以调用该Lua组件库提供的接口函数。
具体地,该动态加载静态库的主要过程是通过依次调用两个接口函数完成的:该静态库动态链接接口dl.open和该静态库资源释放接口dl.close。这样,可以不用关心用户的调用逻辑,也不需要关心用户接口的命名,所有的操作都能交给Lua虚拟机处理,Lua虚拟机只需要将该静态库中的外部函数处理成Lua的function类型传给该Lua脚本即可。以下,分述该两个接口函数的功能:
该静态库动态链接接口dl.open,由该Lua脚本直接调用,根据该Lua脚本传入的加载路径在该脚本区域内找到需要动态链接的该静态库,并解析该静态库。该Lua脚本是由用户编写的,如第四方面的实施例所述。运行过程中,该静态库文件和该Lua脚本被加载到该内存中,该Lua脚本会先执行该静态库动态链接接口dl.open,在该脚本区域中找到需要动态链接的静态库文件。在该Lua脚本中,有需要动态链接的该静态库的路径。该静态库动态链接接口dl.open通过该路径找到该静态库后,解析该静态库,即计算静态库中可加载的段,并映射到分配好的内存中,同时进行符号重定向,然后传回解析参数。因为该设备的内存是使用段式管理的,所以需要算出.bss、.text等各段的偏移,并分配.bss、.text等各段的内存空间。该符号重定向,包括该变量重定向,该函数指针重定向和该互调函数重定向。该变量重定向,是根据该内存中的.text段中的指令集类型将变量的虚拟地址替换为实际地址。该函数指针重定向,是指将内存中.text段中的该函数指针的该虚拟地址替换为该函数地址映射表中的该实际地址,以调用该底层接口函数。该互调函数重定向,是指将互调函数的该虚拟地址替换为该互调函数加载入该内存后的该实际地址,该互调函数是指用户写在该静态库里的用于相互调用的函数。该解析参数包括该静态库的该加载路径和Lua组件库的入口函数。
该静态库资源释放接口dl.close,用于根据该静态库动态链接接口dl.open传入的该句柄,对该静态库分配到的该内存进行释放。
此外,可以调用多次该静态库动态链接接口dl.open加载多个静态库。在释放资源时,可以调用同样数量的静态库资源释放接口dl.close,也可以只调用一个静态库资源释放接口dl.close,视代码书写的情况而定,总之,需要实现资源的释放。
上述过程,对应了本发明提供的第一方面的内容,该内容具体如下:
第一方面,本发明的实施例提出一种动态加载静态库的模块,该模块包括:
函数地址映射表,用于存储底层接口函数的实际地址;该底层接口函数与函数指针一一对应。
静态库动态链接接口dl.open,由Lua脚本直接调用,用于根据该Lua脚本传入的加载路径在脚本区域内找到需要动态链接的该静态库,并解析该静态库;该解析包括:计算静态库中可加载的段,并映射到分配好的内存中,同时进行符号重定向,然后传回解析参数;该符号重定向包括变量重定向,函数指针重定向和互调函数重定向;该变量重定向,是根据该内存中的.text段中的指令集类型将变量的虚拟地址替换为实际地址;该函数指针重定向,是指将内存中.text段中的该函数指针的该虚拟地址替换为该函数地址映射表中的该实际地址,以调用该底层接口函数;该互调函数重定向,是指将互调函数的该虚拟地址替换为该互调函数加载入该内存后的该实际地址,该互调函数是指用户写在该静态库里的用于相互调用的函数;该解析参数包括该静态库的该加载路径和Lua组件库的入口函数。
静态库资源释放接口dl.close,用于根据该静态库动态链接接口dl.open传入的该句柄,对该静态库分配到的该内存进行释放。
最后,需要介绍的是从本发明提供的第一方面的内容衍生而来的另外两个方面的内容,即第二、三方面的发明。如第一方面所述的模块的主体,是基于硬件系统的虚拟模块,即软件。该软件具有完整的实现动态加载静态库的功能,但该功能需要依托其他软件实现。这里所指的其他软件是系统固件。该软件与原有的系统固件相结合,就成为了新系统固件,在原有的系统固件的基础上,增加了新的功能。该新系统固件被安装到原有的设备上后,由于固件的更新,而具有了新的功能,也因此成为了新设备。所有的设备都可以通过更新固件的方式成为新的设备,就解决了某些平台因编译器不支持动态库,无法使用动态链接方案的问题。当然,如前所述,该设备并不需要是一个实体,也可以是一个方便用户调试的虚拟设备。该第二方面、第三方面的内容,分别如下所述:
第二方面,本发明的实施例提出一种动态加载静态库的系统固件,该系统固件包括如第一方面中所述的模块。
第三方面,本发明的实施例提出一种动态加载静态库的设备,该设备采用了如第二方面中所述的系统固件。

Claims (4)

1.一种动态加载静态库的模块,其特征在于,所述模块包括:
函数地址映射表,用于存储底层接口函数的实际地址;所述底层接口函数与函数指针一一对应;
静态库动态链接接口dl.open,由Lua脚本直接调用,用于根据所述Lua脚本传入的加载路径在脚本区域内找到需要动态链接的所述静态库,并解析所述静态库;所述解析包括:计算静态库中可加载的段,并映射到分配好的内存中,同时进行符号重定向,然后传回解析参数;所述符号重定向包括变量重定向,函数指针重定向和互调函数重定向;所述变量重定向,是根据所述内存中的.text段中的指令集类型将变量的虚拟地址替换为实际地址;所述函数指针重定向,是指将所述内存中所述.text段中的所述函数指针的所述虚拟地址替换为所述函数地址映射表中的所述实际地址,以调用所述底层接口函数;所述互调函数重定向,是指将互调函数的所述虚拟地址替换为所述互调函数加载入所述内存后的所述实际地址,所述互调函数是指用户写在所述静态库里的用于相互调用的函数;所述解析参数包括所述静态库的所述加载路径和Lua组件库的入口函数;
静态库资源释放接口dl.close,用于根据所述静态库动态链接接口dl.open传入的句柄,对所述静态库分配到的所述内存进行释放。
2.一种动态加载静态库的系统固件,其特征在于,所述系统固件包括如权利要求1中所述的模块。
3.一种动态加载静态库的设备,其特征在于,所述设备采用了如权利要求2中所述的系统固件。
4.一种采用了如权利要求1所述的模块的C库转Lua库的方法,其特征在于,所述方法包括:
将C库文件编译为目标文件;
使用打包命令,将所述目标文件打包为静态库文件;
通过所述Lua脚本调用所述静态库动态链接接口dl.open;所述Lua脚本传入所述静态库动态链接接口dl.open需要的所述静态库的加载路径和Lua组件库的入口函数,加载成功后自动执行所述Lua组件库的入口函数;
调用所述静态库资源释放接口dl.close。
CN202210065651.3A 2022-01-20 2022-01-20 动态加载静态库的模块、固件及设备和C库转Lua库的方法 Active CN114546515B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210065651.3A CN114546515B (zh) 2022-01-20 2022-01-20 动态加载静态库的模块、固件及设备和C库转Lua库的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210065651.3A CN114546515B (zh) 2022-01-20 2022-01-20 动态加载静态库的模块、固件及设备和C库转Lua库的方法

Publications (2)

Publication Number Publication Date
CN114546515A CN114546515A (zh) 2022-05-27
CN114546515B true CN114546515B (zh) 2023-09-12

Family

ID=81672183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210065651.3A Active CN114546515B (zh) 2022-01-20 2022-01-20 动态加载静态库的模块、固件及设备和C库转Lua库的方法

Country Status (1)

Country Link
CN (1) CN114546515B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737087B (zh) * 2023-08-15 2023-11-03 合肥康芯威存储技术有限公司 一种存储装置及其数据处理方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477110A1 (en) * 2011-01-14 2012-07-18 Wibu-Systems AG Method for protecting an application program against reverse engineering and related computer program product
CN105224370A (zh) * 2015-10-21 2016-01-06 安一恒通(北京)科技有限公司 一种加载elf文件的方法和装置
WO2018094099A1 (en) * 2016-11-17 2018-05-24 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
WO2020070458A1 (fr) * 2018-10-04 2020-04-09 Movida Production Procédé pour générer une liaison (binding) entre une bibliothèque c/c++ et un langage interprété, et mise en oeuvre de ce procédé pour la transformation d'un modèle tridimensionnel (3d)
CN111061638A (zh) * 2019-12-16 2020-04-24 上海钧正网络科技有限公司 一种iOS系统调试的方法、装置及服务器
CN112434286A (zh) * 2020-11-12 2021-03-02 浙江大华技术股份有限公司 动态库的调用方法、装置、电子装置和存储介质
CN112650539A (zh) * 2019-09-26 2021-04-13 无锡江南计算技术研究所 面向异构众核处理器的动态链接运行支撑方法
CN113900702A (zh) * 2021-09-30 2022-01-07 完美世界(北京)软件科技发展有限公司 游戏配置数据的调用方法及装置、存储介质、电子装置
CN113893550A (zh) * 2021-10-08 2022-01-07 深圳市腾讯信息技术有限公司 脚本源码处理方法及相关设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689985B2 (en) * 2005-03-04 2010-03-30 Microsoft Corporation Versioning support for drivers frameworks
US10157045B2 (en) * 2016-11-17 2018-12-18 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477110A1 (en) * 2011-01-14 2012-07-18 Wibu-Systems AG Method for protecting an application program against reverse engineering and related computer program product
CN105224370A (zh) * 2015-10-21 2016-01-06 安一恒通(北京)科技有限公司 一种加载elf文件的方法和装置
WO2017067175A1 (zh) * 2015-10-21 2017-04-27 百度在线网络技术(北京)有限公司 一种加载elf文件的方法、装置、设备和计算机存储介质
WO2018094099A1 (en) * 2016-11-17 2018-05-24 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
WO2020070458A1 (fr) * 2018-10-04 2020-04-09 Movida Production Procédé pour générer une liaison (binding) entre une bibliothèque c/c++ et un langage interprété, et mise en oeuvre de ce procédé pour la transformation d'un modèle tridimensionnel (3d)
CN113168312A (zh) * 2018-10-04 2021-07-23 摩维达产品公司 用于生成c/c++库与解释语言之间的绑定的方法,并且执行所述方法以转换三维(3d)模型
CN112650539A (zh) * 2019-09-26 2021-04-13 无锡江南计算技术研究所 面向异构众核处理器的动态链接运行支撑方法
CN111061638A (zh) * 2019-12-16 2020-04-24 上海钧正网络科技有限公司 一种iOS系统调试的方法、装置及服务器
CN112434286A (zh) * 2020-11-12 2021-03-02 浙江大华技术股份有限公司 动态库的调用方法、装置、电子装置和存储介质
CN113900702A (zh) * 2021-09-30 2022-01-07 完美世界(北京)软件科技发展有限公司 游戏配置数据的调用方法及装置、存储介质、电子装置
CN113893550A (zh) * 2021-10-08 2022-01-07 深圳市腾讯信息技术有限公司 脚本源码处理方法及相关设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
G语言系统模型转换与验证的研究;薛艳;《中国优秀硕士学位论文全文数据库 信息科技辑》(第10期);I138-370 *

Also Published As

Publication number Publication date
CN114546515A (zh) 2022-05-27

Similar Documents

Publication Publication Date Title
US11354144B2 (en) Java native interface and windows universal app hooking
KR102332209B1 (ko) 2개의 명령어 세트 아키텍처들에 따라 컴파일링된 애플리케이션 코드의 실행을 위한 시스템 및 방법
US5247678A (en) Load time linker for software used with a multiprocessor system
EP0718760B1 (en) Method and apparatus for generating platform-standard object files containing machine-independent code
US5911073A (en) Method and apparatus for dynamic process monitoring through an ancillary control code system
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
KR20020085872A (ko) 객체지향 컴퓨터 프로그램의 번역 및 실행방법
US11366684B2 (en) Import mechanism for hardware intrinsics
Puder et al. Cross-compiling android applications to ios and windows phone 7
KR20020085876A (ko) 객체지향 컴퓨터 프로그램의 로딩
US6834391B2 (en) Method and apparatus for automated native code isolation
US20150186165A1 (en) Emulating pointers
US9134973B2 (en) Dynamic compiling and loading at runtime
US20030033593A1 (en) Dynamic execution layer interface for explicitly or transparently executing application or system binaries
CN110457044B (zh) Haxe应用程序的编译方法、装置及电子设备
US7814467B2 (en) Program optimization using object file summary information
US20040083467A1 (en) System and method for executing intermediate code
CN114546515B (zh) 动态加载静态库的模块、固件及设备和C库转Lua库的方法
WO2022237590A1 (zh) 智能合约升级方法及区块链系统
US7350193B2 (en) Procedure invocation in an integrated computing environment having both compiled and interpreted code segments
Kang Function call interception techniques
JP5506936B2 (ja) 意味論的値を利用するオブジェクト・レベルの互換性及びクラスのサイズ変更
CN116401003A (zh) 基于桌面操作系统的安卓应用运行方法、系统及存储介质
KR101083271B1 (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
Beisel et al. Using shared library interposing for transparent application acceleration in systems with heterogeneous hardware accelerators

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