博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载] 问题解决:FFmpeg视频编解码库,无法解析的外部信号
阅读量:6874 次
发布时间:2019-06-26

本文共 1064 字,大约阅读时间需要 3 分钟。

在编译FFmpeg相关项目时,可能会出现:

error LNK2019: 无法解析的外部符号 "int __cdecl avpicture_fill(struct AVPicture *,unsigned char const *,enum AVPixelFormat,int,int)" (?avpicture_fill@@YAHPAUAVPicture@@PBEW4AVPixelFormat@@HH@Z),该符号在函数 "bool __cdecl YV12ToBGR24_FFmpeg(unsigned char *,unsigned char *,int,int)" (?YV12ToBGR24_FFmpeg@@YA_NPAE0HH@Z) 中被引用 error LNK2019: 无法解析的外部符号 "void __cdecl sws_freeContext(struct SwsContext *)" (?sws_freeContext@@YAXPAUSwsContext@@@Z),该符号在函数 "bool __cdecl YV12ToBGR24_FFmpeg(unsigned char *,unsigned char *,int,int)" (?YV12ToBGR24_FFmpeg@@YA_NPAE0HH@Z) 中被引用

这种类似情况,在检查包含目录、库目录、链接器输入和系统环境变量均设置无误的情况下,包含的文件要写成以下形式:

extern "C"{    #include 
#include
#include
#include
#include
};

这种情况是因为,头文件中的函数定义在编译为 C 程序的文件中,而头文件是在 C++ 文件中不带 extern “C” 修饰符声明的。在此情况下,需要添加extern "C"修饰符。

类似的,定义在编译为 C 程序的文件中的符号, 若要在C++ 文件中进行声明,不可使用:

extern int i; extern void g();

而应该使用:

extern "C" int i; extern "C" void g();

 

详细的解释:

转载于:https://www.cnblogs.com/iZander/p/5689249.html

你可能感兴趣的文章
Codeforces Round #287 (Div. 2) ABCDE
查看>>
【转载】读懂IL代码就这么简单(二)
查看>>
09-JS的事件流的概念(重点)
查看>>
有关inline-block
查看>>
文献随笔(九)
查看>>
git相关
查看>>
加入大型的js文件如jQuery文件,Eclipse会报错
查看>>
POJ 2763 (树链剖分+边修改+边查询)
查看>>
全局变量---只创建一次
查看>>
IOS APP上下黑边问题
查看>>
数位dp题集
查看>>
C# 汉字转拼音
查看>>
jquery实现复制的两种方式
查看>>
WPF系列四
查看>>
Reactor模式
查看>>
【转】Sublime Text 2 - 简单介绍
查看>>
mongoose 小问题
查看>>
福大软工 · 第十一次作业 - Alpha 事后诸葛亮(团队)
查看>>
python爬虫笔记3
查看>>
Linux环境测试机器端口连通性
查看>>