[转载] 问题解决:FFmpeg视频编解码库,无法解析的外部信号
2016-07-20 18:00
519 查看
在编译FFmpeg相关项目时,可能会出现:
这种类似情况,在检查包含目录、库目录、链接器输入和系统环境变量均设置无误的情况下,包含的文件要写成以下形式:
这种情况是因为,头文件中的函数定义在编译为 C 程序的文件中,而头文件是在 C++ 文件中不带 extern “C” 修饰符声明的。在此情况下,需要添加
类似的,定义在编译为 C 程序的文件中的符号, 若要在C++ 文件中进行声明,不可使用:
而应该使用:
详细的解释:http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html
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 <libavcodec\avcodec.h> #include <libavformat\avformat.h> #include <libswscale\swscale.h> #include <libavutil\pixfmt.h> #include <libavutil\imgutils.h> };
这种情况是因为,头文件中的函数定义在编译为 C 程序的文件中,而头文件是在 C++ 文件中不带 extern “C” 修饰符声明的。在此情况下,需要添加
extern "C"修饰符。
类似的,定义在编译为 C 程序的文件中的符号, 若要在C++ 文件中进行声明,不可使用:
extern int i; extern void g();
而应该使用:
extern "C" int i; extern "C" void g();
详细的解释:http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html
相关文章推荐
- 通过sql获得mysql的表结构
- 软件架构和设计
- div+css垂直居中显示
- 修改开源库Wheel后,能控制选中颜色及大小
- NYOJ-Color the fence
- 2016第一场多校赛
- 如何识别高级的验证码
- 73条日常Linux shell命令汇总
- Java如何读取Excel行列(getLastRowNum、getLastRowNum)
- 详解mysql建立索引的使用办法及优缺点分析
- 删除GitHub上repository里的某个文件
- [bzoj1562][NOI2009]变换序列(贪心+dfs/二分图最大匹配)
- codeforces水题100道 第十六题 Codeforces Round #164 (Div. 2) A. Games (brute force)
- sort与asort与ksort区别
- 响应式 和 移动 web
- Hive Hook类型
- HDU 2072 单词数 (map)
- 挑战程序设计解题报告 2.6.1辗转相除法
- MySQL索引数据结构及算法原理
- 吉他调弦