首页 > 其他 > 详细

FFmpeg- error: undefined reference to 'av_frame_alloc(

时间:2018-12-25 13:52:04      阅读:275      评论:0      收藏:0      [点我收藏+]

今天使用CMake编译FFmpeg的时候,死活编不过,提示什么“undefined reference to ‘av_frame_alloc()”

后来仔细查找,发现是头文件包含错误

错误的代码:

#include <libavutil/frame.h>
#include "IDecoder.h"

struct AVCodecContext;
class FFDecoder : public IDecoder{

public:
    virtual bool Open(XParameters params);
    /** 发送数据到解码队列 */
    virtual bool SendPacket(XData pkt);
    /** 从解码队列中获取一帧数据 */
    virtual XData RecvFrame();

protected:
    AVCodecContext *avctx = 0;
    AVFrame        *frame = 0;

};

解决办法

因为使用的是C++,所以在包含头文件的时候要特别注意,如果要包含的是C语言的头文件,必须用extern "C" 来包裹。比如:

extern "C" {
#include <libavcodec/avcodec.h>
}

我的问题就是直接在头文件中引入了FFmpeg的头文件 #include <libavutil/frame.h> ,但没有用extern "C" 包裹才出错的。正确的做法是使用extern "C" 包裹该头文件。

或者是直接在顶部声明用到的结构体即可。如:

#include "IDecoder.h"

struct AVCodecContext;
struct AVFrame;
class FFDecoder : public IDecoder{

public:
    virtual bool Open(XParameters params);
    /** 发送数据到解码队列 */
    virtual bool SendPacket(XData pkt);
    /** 从解码队列中获取一帧数据 */
    virtual XData RecvFrame();

protected:
    AVCodecContext *avctx = 0;
    AVFrame        *frame = 0;

};

 

FFmpeg- error: undefined reference to 'av_frame_alloc(

原文:https://www.cnblogs.com/yongdaimi/p/10173434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!