x264代码剖析(四):vs2010编译x264错误集锦

支持VC++平台的x264的最新版本是x264-20091006,接下来就以该版本为例分析编译运行x264过程中遇到的问题以及解决办法。

1、error C2143: syntax error : missing ';' before 'type'

错误提示:

错误原因:MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。

解决办法:在函数开头统一定义变量。

示例源码:

static ALWAYS_INLINE int x264_exp2fix8( float x )
{if( x >= 512.f/6.f ) return 0;if( x <= -512.f/6.f ) return 0xffff;int i = x*(-64.f/6.f) + 512;return (x264_exp2_lut[i&63]+256) << (i>>6) >> 8;
}

修改后代码:

static ALWAYS_INLINE int x264_exp2fix8( float x )
{int i; if( x >= 512.f/6.f ) return 0;if( x <= -512.f/6.f ) return 0xffff;i = x*(-64.f/6.f) + 512;return (x264_exp2_lut[i&63]+256) << (i>>6) >> 8;
}

注:x264代码中有十几处类似的错误,只需一一改正过来就可以了。

2、error C2059: syntax error : '['

错误代码:

static const uint8_t check_mv_lists[X264_MBTYPE_MAX] = {[P_L0]=1, [B_L0_L0]=1, [B_L1_L1]=2};

修改为:

static const uint8_t check_mv_lists[X264_MBTYPE_MAX] ={0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0};

3、error C2146: syntax error : missing ')' before identifier 'PRIx32'

错误代码:

fprintf( stderr, "Bad header magic (%"PRIx32" <=> %s)\n",*((uint32_t*)header), header );

修改为:

fprintf( stderr, "Bad header magic (%ld %s)\n", *((uint32_t*)header), header );

4、error LNK2019: unresolved external symbol _x264_lookahead_init referenced in function _x264_encoder_open_76

这是由于libx264工程没有添加lookahead.c文件,从而缺少几个函数的定义造成的,错误提示如下图:

解决方法:添加lookahead.c进工程,如下图所示:

5、error LNK2019: unresolved external symbol _log2f referenced in function _x264_analyse_init_costs

解决办法:重新定义一下log2f(x)即可,在osdep.h中添加log2f(x)定义,加入的代码如下:

#ifdef _MSC_VER
#define inline __inline
#define strcasecmp stricmp
#define strncasecmp strnicmp
#define snprintf _snprintf
#define fseek _fseeki64
#define ftell _ftelli64
#define isfinite _finite
#define strtok_r strtok_s
#define _CRT_SECURE_NO_DEPRECATE
#define X264_VERSION "" // no configure script for msvc
#define log2f(x) (logf(x)*1.4426950408889634f)
#endif

截止目前,应该可以把所有的问题都解决了,出现了大家最喜欢的Build succeeded。

编译成功的源码包下载地址:http://download.csdn.net/detail/frd2009041510/9455143

x264代码剖析(四):vs2010编译x264错误集锦相关推荐

  1. x264代码剖析(二):如何编译运行x264以及x264代码基本框架

    x264代码剖析(二):如何编译运行x264以及x264代码基本框架 x264工程在x265出现之前一直在更新,但是自x264-20091007(含)不再支持VC++平台,也就是说支持VC++平台的x ...

  2. x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()

    x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode() 宏块编码函数x264_macroblock_encode()是完成变换与量化的主要函数,而x264_m ...

  3. x264代码剖析(一):图文详解x264在Windows平台上的搭建

    x264代码剖析(一):图文详解x264在Windows平台上的搭建 X264源码下载地址:http://ftp.videolan.org/pub/videolan/x264/ 平台:win7 PC. ...

  4. x264代码剖析(九):x264_encoder_encode()函数之x264_slice's'_write()函数

    x264代码剖析(九):x264_encoder_encode()函数之x264_slice's'_write()函数 x264_encoder_encode()函数的核心函数就是x264_slice ...

  5. x264代码剖析(十一):核心算法之宏块分析函数x264_macroblock_analyse()

    x264代码剖析(十一):核心算法之宏块分析函数x264_macroblock_analyse() x264的 x264_slice_write()函数中调用了宏块分析函数x264_macrobloc ...

  6. x264代码剖析(七):encode()函数之x264_encoder_encode()函数

    x264代码剖析(七):encode()函数之x264_encoder_encode()函数 encode()函数是x264的主干函数,主要包括x264_encoder_open()函数.x264_e ...

  7. VS2010 编译Duilib 错误

    解决VS2010 编译Duilib 错误 1>f:\mystudy\myprogramers\duilib\Control/UIFlash.h(10): warning C4192: 导入类型库 ...

  8. 编译Caffe-Win错误集锦

    Caffe在Windows下编译还是遇到不少麻烦的... 1.visual studio 2013 error C2371: 'int8_t' : redefinition; 引入的unistd.h文 ...

  9. (转)x264代码详细阅读之x264.c,common.c,encoder.c

    转自:http://alphamailpost.blog.163.com/blog/static/201118081201281103931932/ x264代码详细阅读第一之x264.c http: ...

最新文章

  1. api 定位 微信小程序 精度_微信小程序城市定位(借助百度地图API判断城市)
  2. 特斯拉2021全年交付近百万辆,同比暴涨87%,马斯克:了不起!
  3. 基于MIPS架构的BackTrace实现
  4. Kubernetes存储之PV-PVC
  5. 2021年第十二届蓝桥杯 - 省赛 - C/C++大学A组 - D.路径
  6. 数据资产纳入国资保值增值考核
  7. 双指针--Codeforces Round #645 (Div. 2) d题
  8. python字符串查找的四种方法_Python中的字符串查找操作方法总结
  9. final变量属性小记
  10. 字节跳动产品经理面经——飞书
  11. MFC位图读取操作步骤记录
  12. Excel被锁定,如何解锁
  13. 炭足迹计算机的火车好处,碳足迹与碳足迹计算器.pdf
  14. word域代码 乱序
  15. Robust performance of virtual sensing methods for active noise control 翻译
  16. 使用gsds绘制基因结构图_基因结构图的绘制
  17. 用C/C++手撕CPlus语言的集成开发环境(1)—— 语言规范 + 词法分析器
  18. css 动画 抖动,css3动画之上下抖动
  19. java1.17知识点回顾
  20. C/C++制作炫酷烟雾特效

热门文章

  1. 全民 Transformer (二): Transformer在深度学习和NLP中如何发挥作用
  2. docker搭建私有仓库笔记
  3. 黑盒测试实践---day2
  4. 更改自身web项目的图标(默认为tomcat的小喵咪)
  5. I.MX6 2G DDR3 16G eMMC
  6. 【乐畅】工作积累 ---- 设置一个弹窗的层
  7. CSS3给页面打标签
  8. VirtualBox上编译android遇到共享文件夹引起的问题
  9. Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
  10. .xyz文件_Orca.xyz:除了银行系统瑞士还有同样安全的数字保险箱