VPP提供了用于开发自定义插件的I / S,可将其挂接到节点图中。我只看过用C语言编写的此类插件的示例,并且想知道是否还可以使用其他语言(例如Go)编写此类插件。
答案 0 :(得分:2)
我不知道什么是“ VPP”,但是答案是:“也许”;这是为什么:
Go代码能够通过称为cgo
的工具与C库进行交互。
cgo
是多方面的事情:它允许您以某种方式“导出”某些Go函数,以便可以从C端调用它们,并且它允许您从C端调用函数。侧。它还允许您编写一些内联C代码,以在必要时为C侧提供粘合。
一段时间以来,Go构建工具集(至少是其“参考”实现)提供了使用C兼容API将Go代码编译到静态或动态库中的功能。
请参见this。
从理论上讲,牢记这些事情,应该有可能做您想要做的事情。 请注意一些可能的障碍:
在大多数情况下,如果“平台”允许您用C编写“插件”,则前提是您的插件将广泛使用平台自己的API。
这通常意味着您的插件应该包含平台提供的某些头文件。
平台可能还需要您的插件才能链接到某些平台提供的库(通常是共享库)或库。
cgo
可以完成上述所有操作,但是您将需要仔细检查平台提供的API,并可能编写Go帮助程序以使其对Go代码的使用更加自然。
构建/链接问题(通常是头文件和lib的位置)也可能需要解决。