- 使用libtcc在运行时编译生成动态库,源码中需要有一个hook点,专门用于加载和执行动态生成的函数,调用dlopen函数加载动态库,dlsym找到函数地址,实现运行时动态执行生成的函数功能;
- 使用tinyfilter,运行时读取动态生成的配置文件,根据配置文件的蓝图连接各个类型的tinyfilter,生成pipeline tree,从而实现动态生成函数执行逻辑的功能,这种方式的限制在于tinyfilter的功能,若tinyfilter不具有的功能,无法动态执行,不如前者自由;
- 动态生成函数的使用场景非常多:
① 测试场景:通常用于构造一些测试用例,改变一些软件运行时行为;
② 数据校验:动态生成一些校验器实体,软件运行过程中,根据收到的不同消息,生成不同的消息校验器,对数据进行校验,校验的内容可以自由在配置文件中进行自定义;
[C/C++]运行时动态生成代码
最新推荐文章于 2024-05-26 19:04:04 发布