如何生成代码以与运行的cpp应用程序接口,而不需要重新编译?

我正在尝试创建一个后端框架,以通过串行连接与硬件交互。我需要能够指定这些硬件模块的交互方式,而无需重新编译并在具有有限资源的系统上运行。

我已经有了与硬件交互并具有广泛功能发送消息到设备的cpp代码。

运行时影响是一个严肃的考虑因素,它运行在一个非常有限的架构发行版上,出于硬件原因,我们不想太多更改。

对我来说,最合理的做法是与一个脚本语言进行接口,这个语言可以很容易地生成一组对cpp基础的引用,可以在命令下加载。(有点像一个插件系统)

Python - 是一个非常好的选择,但我几乎没有使用嵌入式Python的经验,我已经调查了它,我猜我可能对解释脚本如何与原始程序的功能相关联感到困惑,需要像pybind11和嵌入式Python工作在一起一样。Binder当然很有吸引力。请勿使用Boost - _或许要用一点点_。

LUA - 是一个经过充分测试的强大的选择,但更难以按命令生成。 LuaBridge也具有我所需的功能。最大的关注点是运行时影响,但当然我不是专家。

只需在cpp中制作整个并加载库,像一个普通人一样 - 坚实的选择,但很可能是最难以生成和轻松运行语法检查的选项。

让整个东西都在脚本语言中,并摆脱编译器的开销 - 我的意思是技术上这是一个选择

当然,这并不是所有的选项,但这绝对是我所不懂的领域,我认为讨论是有益的。

我真的很想知道我应该花时间研究什么。我已经花了太多时间查找pybind,我发现自己晚上无法睡觉。

理想情况下,这个工作流程应该像这样运行:

_在主控制器上_:

  1. 运行接口程序(cpp)

  2. 接口程序进行诊断和检查模块状态(已完成)

  3. 接口检查运行脚本以执行模块功能

_脚本_:

  1. 从某些资源生成

  2. 运行测试以验证生成不具有语法错误

  3. 移动到文件夹中,接口程序可以以"完全"安全的方式抓取它(我开玩笑了,我知道这个设置的问题,但我们现在不考虑它)

这太长了,我很抱歉,我只是非常迷茫和失落。

是的,我很抱歉我没有澄清生成代码的重要性。我们建立了一个非常简单的顶级gui,用于与硬件交互,这需要将其翻译成与控制器的主接口交互的脚本。

我昨晚想到的另一个选择:

编写一个非常简单的自定义脚本语言,我可以在cpp一侧解析并以这种方式链接

点赞
用户4889185
用户4889185

如果你正在生成脚本,你可以将其简化为一个简单的字节码,可以被解释。这样你就不必处理解析或语法验证的问题。每个“指令”都可以是一个简单的操作码,后面是零个或多个操作数,每个操作数都是整数、浮点数或字符串(以及您的硬件支持/需要的任何其他基本数据类型)。你可以使用类似 msgpack 的编码和解码指令紧凑的工具。

如果这个模型有效,你可以逐步添加开发者工具,例如最小化汇编器,甚至是一个生成字节码的脚本解释器,从而避免了任何在约束硬件环境中复杂度的问题。

2019-01-24 17:12:18