Я следовал инструкции, доступной в Основы разработки плагинов 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)