Не удалось скомпилировать Boilerplate, созданный на основе GstPlugin - PullRequest
0 голосов
/ 26 марта 2020

Я следовал инструкции, доступной в Основы разработки плагинов Gst при создании шаблонного примера для моего примера плагина, в данном случае HelloWorld.

Я создал пример плагина, вызвав Инструмент make_element в клонированном репозитории

../tools/make_element HelloWorld

После этого я изменил meson.build в каталоге плагинов gst для включения сгенерированных исходных файлов, а именно gsthelloworld.h и gsthelloworld. c

helloworld_sources = [
  'src/gsthelloworld.c'
  ]

gsthelloworld = library('gsthelloworld',
  helloworld_sources,
  c_args: plugin_c_args,
  dependencies : [gst_dep],
  install : true,
  install_dir : plugins_install_dir,
)

Я обнаружил ошибки после выполнения meson build && ninja -C build:

gst-template/build/../gst-plugin/src/gsthelloworld.c:184: undefined reference to `GST_HELLOWORLD'

**there are multiple lines of the same errors happen at different part of the source file.

Не могу найти объявление GST_HELLOWORLD в обоих сгенерированных исходных файлах.

Глядя на учебное пособие по Основам разработки Gst-плагинов , я вижу, что было объявление макроса, которое следует аналогичному соглашению об именах с моим HelloWorld , в то время как предоставленный пример MyFilter .

#define GST_MY_FILTER(obj) \
  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MY_FILTER,GstMyFilter))

Однако я не вижу ни одного макроса в сгенерированных исходных файлах. Итак, я думаю, это могло быть написано где-то еще, поскольку шаблон, предоставленный в форме gstplugin. c и gstplugin.h, выглядит очень похоже на сгенерированные исходные файлы и может быть успешно скомпилирован, если я удалю свой пример плагина из файла сборки .

Таким образом, есть ли какой-то шаг, который я пропускаю, который имеет отношение к компиляции? Спасибо.

РЕДАКТИРОВАНИЕ: Я делал это на P C с Ubuntu 18.04 (gstreamer 1.14.5)

...