Можно ли реализовать плагины VPP с помощью Go? - PullRequest
0 голосов
/ 13 марта 2019

VPP предоставляет I / S для разработки пользовательских плагинов, которые можно подключить к графу узлов.Я видел только примеры таких плагинов, написанных на языке C, и мне было интересно, можно ли использовать для написания таких плагинов другой язык, например Go.

1 Ответ

2 голосов
/ 13 марта 2019

Я понятия не имею, что такое «VPP», но, тем не менее, ответ: «возможно»;И вот почему:

  • Код Go может взаимодействовать с библиотеками C через его средство, известное как cgo.

    cgoмногогранная вещь: он позволяет вам «экспортировать» определенные функции Go определенным образом, чтобы их можно было вызывать со стороны C, и он позволяет вам вызывать функции со стороны C.Это также позволяет вам писать биты встроенного кода C, чтобы при необходимости связать его со стороной C.

  • Поскольку некоторое время Go собирает набор инструментов (по крайней мере, его "эталонная" реализация)для компиляции кода Go в статическую или динамическую библиотеку с C-совместимым API.

    См. this .

.Теория, должно быть возможно сделать то, что вы после.Обратите внимание на некоторые возможные препятствия:

  • В большинстве случаев, если «платформа» позволяет вам написать «плагин» на C, это предполагает, что ваш плагин будет широко использовать собственную платформуAPI.

    Обычно это означает, что ваш плагин должен включать определенные заголовочные файлы, предоставляемые платформой.

  • Платформе также может потребоваться, чтобы ваш плагин связывался с какой-то платформой.предоставленная библиотека (обычно совместно используемая) или библиотеки.

cgo может выполнить все вышеперечисленное, но вам нужно будет тщательно изучить API, предоставляемый платформой, и, возможно, написать помощников Go длясделать его использование более естественным для кода Go.

Проблемы со сборкой / компоновкой (обычно местоположения заголовочных файлов и библиотек) также могут быть решены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...