Gsteamer конфликтующее объявление в opencv в сборке Yocto - PullRequest
1 голос
/ 27 февраля 2020

Я собираю Yocto 2.5 (Sumo) с Gstreamer 1.14 и OpenCV 3.4.5

Я получаю эту ошибку при компиляции Gstreamer:

build_xwayland_mq/tmp/work/aarch64-mx8m-poky-linux/gstreamer1.0-plugins-bad/1.14.4.imx-r0/recipe-sysroot/usr/include/opencv2/imgproc/types_c.h:445:21: error: conflicting declaration of C function 'CvMoments cvMoments(const cv::Moments&)'
 CV_INLINE CvMoments cvMoments(const cv::Moments& m)

та же ошибка в imgproc_ c .h: 360: 13

Я видел, как кто-то решил эту проблему, создав вместо этого OpenCV 4, но нам нужен OpenCV 3.4.5 для нашего собственного проекта.

Кто-нибудь знает, как разрешить этот конфликт?

1 Ответ

1 голос
/ 28 февраля 2020

слишком долго для комментария ..

Я только что сделал быстрый поиск, нашел это: https://www.yoctoproject.org/pipermail/meta-freescale/2019-March/023888.html

Есть некоторые проблемы во включениях .. Я думаю, в В упомянутых hpp-файлах есть некоторые типы, которые не объявлены в этом imgproc_ c .h для 3.4, но уже перемещены туда для opencv 4 (только мое предположение). Вам просто нужно добавить эти hpp во все места (в плохих gst плагинах), где вы найдете include для imgproc_c.h.

Возьмите вдохновение от этого .. или, возможно, оно само решит вашу проблему: https://git.yoctoproject.org/cgit/cgit.cgi/meta-freescale/tree/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-opencv-fix-build-for-opencv-3-4-2.patch?h=thud Патч для Yocto Thud .. но, возможно, это не имеет значения для GStreamer. В худшем случае вам придется сделать бэкпорт или сделать собственный патч для сумо.

Или, если вы можете попробовать обновить до thud (должно быть небольшая разница) или новее, и проверить, сохраняется ли он.

...