博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
x264代码剖析(四):vs2010编译x264错误集锦
阅读量:6591 次
发布时间:2019-06-24

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

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

 

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

 

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

 

错误提示:

错误原因:MSVS编译器对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代码中有十几处类似的错误,只需一一改正过来就可以了。

2error 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};

3error 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 );

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

 

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

        

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

5error 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。大笑

        编译成功的源码包下载地址:

你可能感兴趣的文章
Swift——(两)Swift访问元组
查看>>
【Eclipse】安装subclipse的Eclipse插件
查看>>
Git查看、删除、重命名远程分支和tag【转】
查看>>
浅谈IM软件业务知识——非对称加密,RSA算法,数字签名,公钥,私钥
查看>>
Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结
查看>>
正确计算linux系统内存使用率
查看>>
关于MapReduce单词统计的例子:
查看>>
【php】利用php的构造函数与析构函数编写Mysql数据库查询类 (转)
查看>>
导出DLLRegisterServer接口遇到的问题
查看>>
压缩算法
查看>>
ios和android的发展前景比较
查看>>
[转载]SpringMVC的Model参数绑定方式
查看>>
Linux socket多进程服务器框架三
查看>>
Debug.print的用法
查看>>
常用名词
查看>>
计算机硬件常识
查看>>
第一百三十四节,JavaScript,封装库--遮罩锁屏
查看>>
【转】cookie如何共享到各个浏览器
查看>>
自制基于HMM的python中文分词器
查看>>
如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接
查看>>