可以使用Go来实现VPP插件吗?

时间:2019-03-13 09:56:30

标签: go plugins vector-processing

VPP提供了用于开发自定义插件的I / S,可将其挂接到节点图中。我只看过用C语言编写的此类插件的示例,并且想知道是否还可以使用其他语言(例如Go)编写此类插件。

1 个答案:

答案 0 :(得分:2)

我不知道什么是“ VPP”,但是答案是:“也许”;这是为什么:

  • Go代码能够通过称为cgo的工具与C库进行交互。

    cgo是多方面的事情:它允许您以某种方式“导出”某些Go函数,以便可以从C端调用它们,并且它允许您从C端调用函数。侧。它还允许您编写一些内联C代码,以在必要时为C侧提供粘合。

  • 一段时间以来,Go构建工具集(至少是其“参考”实现)提供了使用C兼容API将Go代码编译到静态或动态库中的功能。

    请参见this

从理论上讲,牢记这些事情,应该有可能做您想要做的事情。 请注意一些可能的障碍:

  • 在大多数情况下,如果“平台”允许您用C编写“插件”,则前提是您的插件将广泛使用平台自己的API。

    这通常意味着您的插件应该包含平台提供的某些头文件。

  • 平台可能还需要您的插件才能链接到某些平台提供的库(通常是共享库)或库。

cgo可以完成上述所有操作,但是您将需要仔细检查平台提供的API,并可能编写Go帮助程序以使其对Go代码的使用更加自然。

构建/链接问题(通常是头文件和lib的位置)也可能需要解决。