Ошибки при компиляции ffmpeg и opencv - PullRequest
2 голосов
/ 11 марта 2012

Я пытаюсь скомпилировать этот пример

на Убунто. Это команда компиляции:

    g++ video.cpp -o video `pkg-config --cflags opencv` `pkg-config --libs opencv` -lpthread -lavutil -lavformat -lavcodec -lz

и вот ошибки, которые я получаю:

     /usr/local/include/libavutil/common.h:173:47: error: ‘UINT64_C’ was not declared in this scope
     video.cpp: In member function ‘int FFread::init(char*)’:
     video.cpp:24:56: error: ‘av_open_input_file’ was not declared in this scope
     video.cpp:28:5: warning: ‘int av_find_stream_info(AVFormatContext*)’ is deprecated      (declared at /usr/local/include/libavformat/avformat.h:1266) [-Wdeprecated-declarations]
     video.cpp:28:35: warning: ‘int av_find_stream_info(AVFormatContext*)’ is deprecated (declared at /usr/local/include/libavformat/avformat.h:1266) [-Wdeprecated-declarations]
     video.cpp:32:36: error: ‘dump_format’ was not declared in this scope
     video.cpp:37:48: error: ‘CODEC_TYPE_VIDEO’ was not declared in this scope

Пожалуйста, сообщите. Спасибо, Наум

Ответы [ 3 ]

5 голосов
/ 02 мая 2012

См. Libav faq.txi

@ Я использую Libav из моего приложения C ++, но компоновщик жалуется на отсутствующие символы, которые, по-видимому, доступны.

Libav - это чистый проект C, использующий математические функции C99 для включения C ++. чтобы использовать их, вы должны добавить -D__STDC_CONSTANT_MACROS к вашему CXXFLAGS

1 голос
/ 11 марта 2012

Вы вызываете библиотеки FFmpeg из программы на C ++. Вы упаковываете вызовы #include в соответствующие заголовки в

extern "C" { ... }

конструкции? Заголовки не имеют автоматической поддержки C ++.

EDIT:

Я прочитал связанный пример источника; это правильно делает.

Я думаю, что проблема заключается в несоответствии версий. Примеру более 2 лет, и API-интерфейсы FFmpeg продолжаются. Возможно, вам придется обновить вызовы API самостоятельно.

0 голосов
/ 11 марта 2012

Насколько я помню, вы должны использовать cmake для сборки opencv. cmake проверяет вашу среду с точки зрения компилятора c, поддержки библиотек, библиотек потоков и т. д. и автоматически устанавливает некоторые флаги при компиляции. так что не пытайтесь скомпилировать это самостоятельно. просто следуйте инструкциям здесь http://opencv.willowgarage.com/wiki/InstallGuide_Linux

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