就我而言,我正在尝试使用QtMultimedia和libffmpeg作为解码器。 导入ffmpeg为extern“C”,但ffmpeg的AVPixelFormat与QVideoFrame的PixelFormat相撞。
确切错误:
'AVPixelFormat':不是'QVideoFrame'的成员
有谁知道可能的解决方案?
编辑:代码部分。
第2部分:基于dranger tutorial
的libffmpeg的使用extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
}
答案 0 :(得分:0)
如果标题包含C ++代码,则不能盲目地将“C”标记为“C”。即使您通过该冲突,当您的调用尝试链接到“C”符号但ffmpeg库使用C ++链接导出它们时,您将在链接时遇到问题。
如果您正在尝试导出C符号,我的建议是创建一个导出C的包装函数,但将C ++调用放入库中。
答案 1 :(得分:0)
这是由FFmpeg pixfmt.h
中的以下行引起的:
#define PixelFormat AVPixelFormat
您可以尝试以下技巧:
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
}
#undef PixelFormat
#include <qt headers>