代码之家  ›  专栏  ›  技术社区  ›  arx

如何在Linux中实现应用程序的脚本化

  •  4
  • arx  · 技术社区  · 15 年前

    我已经编写了一个C++应用程序,它采用复杂的二进制文件格式,并将其转换为人类可读的文本。编辑完文本后,可以将其重新编译回二进制文件格式。

    如果应用程序的内部对象模型是可编写脚本的,这将更有用。在Windows上,我会使用COM或.Net公开对象,但我希望它在Linux上工作。我可以嵌入一个脚本语言,但这是一个相当多的工作,并限制用户使用我选择的脚本语言。理想情况下,我正在寻找从我的应用程序中公开可编写脚本的DOM的某种方法,即:

    • 跨平台(但Linux支持是最重要的)
    • 正在进行(但这不是必需的)

    3 回复  |  直到 15 年前
        1
  •  3
  •   liori    15 年前

    通常的方法是公开一些CLI命令,并允许用户以用户编写的任何shell/script语言使用它们;见f.e。 imagemagick ,它公开了许多用于在格式之间转换图像和应用转换的命令。这在任何操作系统中都很有效。

    moc mocp (“主机播放器上的音乐”)或 xmms2

    不要害怕嵌入完整的语言。像这样的语言 Lua Guile

    有一些方法可以使用特殊的库将API公开给几种脚本语言。你可以在这里读到他们的故事: Kross@Wikipedia . 我对他们没有经验。

    我假设你的程序将关闭源代码。。。然后我看到的最后一个选择是公开某种API/ABI接口,它可以被用户的C程序使用(f.e.编译到动态库中)。这样用户就可以为他们想要的任何语言制作包装器,而且他们还可以用纯C语言编写代码以提高速度。这个解决方案可能很难实现可移植性,但它给了您(和您的用户)灵活性。

    请注意,过度设计脚本性很容易:最好将编程构造留给外部语言,并且只提供与程序交互的简单方法。我见过一些程序在脚本语言中添加了自己的循环功能,尽管它们并没有给用户带来任何价值:即一次传递多个图像进行转换的能力,尽管这并没有加快处理速度。

        2
  •  3
  •   Ignacio Vazquez-Abrams    15 年前

    你会发现 D-Bus 有用。它提供了一个支持激活的面向对象API。

        3
  •  0
  •   Felix    15 年前

    顺便说一句,如果您决定使用套接字,那么最好实现某种标准化协议,例如HTTP上的XML-RPC。这将使您的“API”更易于使用。

    再说一次,我希望我明白你所说的“可脚本化”是什么意思。如果没有,就无视我的回答。