Windows下编译x264

本文提供了两种方法来在Windows环境下编译最新版本的x264,包括解决编译过程中遇到的语法错误和依赖问题,最终生成可用的lib和exe文件。

早期的版本有vc可以直接编译的, 现在的没有vc版本了;

如果希望在windows上学习x264,可以直接找到vc版本;


这里例举一下,网上的两个版本方法:


一:VS2010编译x264(20091006)

如果你仅仅需要使用x264的话你可以到这下载:http://x264.nl/
x264的源码下载地址:http://www.videolan.org/developers/x264.html
历史版本下载地址:ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
由于最新版的源码已经没有了vs工程,这篇文章编译的源码是最后一版带有vs工程的x264-snapshot-20091006-2245版本。
这里我们还需要yasm(汇编器):http://yasm.tortall.net/Download.html
解压放到build\win32里,把vsyasm.exe改为yasm.exe

准备完成,双击x264.sln,vs2010会提示转换工程,下一步,完成。
首先编译libx264,右击设为启动项。开始编译,按F7,失败,提示:

  

1>G:\x264-snapshot-20091006-2245\common/common.h(170): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>G:\x264-snapshot-20091006-2245\common/common.h(171): error C2065: “i”: 未声明的标识符
1>G:\x264-snapshot-20091006-2245\common/common.h(171): error C2065: “i”: 未声明的标识符

  

后面还有很多类似的错误,都是因为MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。
解决办法:在函数开头统一定义变量。
比如上面第一个错误,原文是:

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="kwd" style="color: rgb(0, 0, 136);">static</span><span class="pln" style="color: rgb(0, 0, 0);"> ALWAYS_INLINE </span><span class="kwd" style="color: rgb(0, 0, 136);">int</span><span class="pln" style="color: rgb(0, 0, 0);"> x264_exp2fix8</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">float</span><span class="pln" style="color: rgb(0, 0, 0);"> x </span><span class="pun" style="color: rgb(102, 102, 0);">)</span></code></li><li class="L1" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="pun" style="color: rgb(102, 102, 0);">{</span></code></li><li class="L2" style="list-style-type: decimal;"><code><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> x </span><span class="pun" style="color: rgb(102, 102, 0);">>=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">512.f</span><span class="pun" style="color: rgb(102, 102, 0);">/</span><span class="lit" style="color: rgb(0, 102, 102);">6.f</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">)</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">return</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></code></li><li class="L3" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> x </span><span class="pun" style="color: rgb(102, 102, 0);">></span><span class="lit" style="color: rgb(0, 102, 102);">6</span><span class="pun" style="color: rgb(102, 102, 0);">)</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">>></span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">8</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></code></li><li class="L4"><code><span class="pun" style="color: rgb(102, 102, 0);">}</span></code></li></ol>

把i的定义放到函数体开头:

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="kwd" style="color: rgb(0, 0, 136);">static</span><span class="pln" style="color: rgb(0, 0, 0);"> ALWAYS_INLINE </span><span class="kwd" style="color: rgb(0, 0, 136);">int</span><span class="pln" style="color: rgb(0, 0, 0);"> x264_exp2fix8</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">float</span><span class="pln" style="color: rgb(0, 0, 0);"> x </span><span class="pun" style="color: rgb(102, 102, 0);">)</span></code></li><li class="L1" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="pun" style="color: rgb(102, 102, 0);">{</span></code></li><li class="L2" style="list-style-type: decimal;"><code><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">int</span><span class="pln" style="color: rgb(0, 0, 0);"> i</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></code></li><li class="L3" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> x </span><span class="pun" style="color: rgb(102, 102, 0);">>=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">512.f</span><span class="pun" style="color: rgb(102, 102, 0);">/</span><span class="lit" style="color: rgb(0, 102, 102);">6.f</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">)</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">return</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></code></li><li class="L4"><code><span class="pln" style="color: rgb(0, 0, 0);">    </span><span class="kwd" style="color: rgb(0, 0, 136);">if</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> x </span><span class="pun" style="color: rgb(102, 102, 0);">></span><span class="lit" style="color: rgb(0, 102, 102);">6</span><span class="pun" style="color: rgb(102, 102, 0);">)</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">>></span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="lit" style="color: rgb(0, 102, 102);">8</span><span class="pun" style="color: rgb(102, 102, 0);">;</span></code></li><li class="L5" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="pun" style="color: rgb(102, 102, 0);">}</span></code></li></ol>

错误消失,后面类似的错误都要用这种方法解决。(而且大部分都是这种错误,真麻烦啊!)
再次编译,warning就不用管了。再次出现错误,提示为:

  

1>....\encoder\analyse.c(2950): error C2059: 语法错误:“[”

  

双击提示找到错误位置。

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="kwd" style="color: rgb(0, 0, 136);">static</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">const</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">uint8_t</span><span class="pln" style="color: rgb(0, 0, 0);"> check_mv_lists</span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="pln" style="color: rgb(0, 0, 0);">X264_MBTYPE_MAX</span><span class="pun" style="color: rgb(102, 102, 0);">]</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">=</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">{[</span><span class="pln" style="color: rgb(0, 0, 0);">P_L0</span><span class="pun" style="color: rgb(102, 102, 0);">]=</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="pln" style="color: rgb(0, 0, 0);">B_L0_L0</span><span class="pun" style="color: rgb(102, 102, 0);">]=</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="pln" style="color: rgb(0, 0, 0);">B_L1_L1</span><span class="pun" style="color: rgb(102, 102, 0);">]=</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">};</span></code></li></ol>

改为:

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="kwd" style="color: rgb(0, 0, 136);">static</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">const</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="typ" style="color: rgb(102, 0, 102);">uint8_t</span><span class="pln" style="color: rgb(0, 0, 0);"> check_mv_lists</span><span class="pun" style="color: rgb(102, 102, 0);">[</span><span class="pln" style="color: rgb(0, 0, 0);">X264_MBTYPE_MAX</span><span class="pun" style="color: rgb(102, 102, 0);">]</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">={</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">1</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">2</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="lit" style="color: rgb(0, 102, 102);">0</span><span class="pun" style="color: rgb(102, 102, 0);">};</span></code></li></ol>

编译,提示:

  

2>....\muxers.c(299): error C2146: 语法错误: 缺少“)”(在标识符“PRIx32”的前面)

  

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="pln" style="color: rgb(0, 0, 0);">fprintf</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> stderr</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="str" style="color: rgb(0, 136, 0);">"Bad header magic (%"</span><span class="typ" style="color: rgb(102, 0, 102);">PRIx32</span><span class="str" style="color: rgb(0, 136, 0);">"  %s)\n"</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">*((</span><span class="typ" style="color: rgb(102, 0, 102);">uint32_t</span><span class="pun" style="color: rgb(102, 102, 0);">*)</span><span class="pln" style="color: rgb(0, 0, 0);">header</span><span class="pun" style="color: rgb(102, 102, 0);">),</span><span class="pln" style="color: rgb(0, 0, 0);"> header </span><span class="pun" style="color: rgb(102, 102, 0);">);</span></code></li></ol>

改为:

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="pln" style="color: rgb(0, 0, 0);">fprintf</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);"> stderr</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="str" style="color: rgb(0, 136, 0);">"Bad header magic (%ld %s)\n"</span><span class="pun" style="color: rgb(102, 102, 0);">,</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">*((</span><span class="typ" style="color: rgb(102, 0, 102);">uint32_t</span><span class="pun" style="color: rgb(102, 102, 0);">*)</span><span class="pln" style="color: rgb(0, 0, 0);">header</span><span class="pun" style="color: rgb(102, 102, 0);">),</span><span class="pln" style="color: rgb(0, 0, 0);"> header </span><span class="pun" style="color: rgb(102, 102, 0);">);</span></code></li></ol>

继续编译,提示:

  

2>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_init,该符号在函数 _x264_encoder_open_76 中被引用
2>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_is_empty,该符号在函数 _x264_encoder_encode 中被引用
2>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_get_frames,该符号在函数 _x264_encoder_encode 中被引用
2>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_put_frame,该符号在函数 _x264_encoder_encode 中被引用
2>libx264.lib(encoder.obj) : error LNK2019: 无法解析的外部符号 _x264_lookahead_delete,该符号在函数 _x264_encoder_close 中被引用
2>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_analyse_init_costs 中被引用

  

这是由于libx264工程没有添加lookahead.c文件,从而缺少几个函数的定义造成的,添加lookahead.c进工程。再次编译,修改lookahead.c中的几个错误,成功1个,失败1个,提示:

  

2>libx264.lib(analyse.obj) : error LNK2019: 无法解析的外部符号 _log2f,该符号在函数 _x264_analyse_init_costs 中被引用

  

这个只要定义一下log2f(x)就可以了。
在osdep.h中添加log2f(x)定义。

<ol class="linenums" style="margin-top: 0px; margin-bottom: 0px;"><li class="L0" style="list-style-type: decimal;"><code><span class="com" style="color: rgb(136, 0, 0);">#ifdef</span><span class="pln" style="color: rgb(0, 0, 0);"> _MSC_VER</span></code></li><li class="L1" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="kwd" style="color: rgb(0, 0, 136);">inline</span><span class="pln" style="color: rgb(0, 0, 0);"> __inline</span></code></li><li class="L2" style="list-style-type: decimal;"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> strcasecmp stricmp</span></code></li><li class="L3" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> strncasecmp strnicmp</span></code></li><li class="L4"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> snprintf _snprintf</span></code></li><li class="L5" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> fseek _fseeki64</span></code></li><li class="L6" style="list-style-type: decimal;"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> ftell _ftelli64</span></code></li><li class="L7" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> isfinite _finite</span></code></li><li class="L8" style="list-style-type: decimal;"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> strtok_r strtok_s</span></code></li><li class="L9" style="background-color: rgb(238, 238, 238);"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> _CRT_SECURE_NO_DEPRECATE</span></code></li><li class="L0" style="list-style-type: decimal;"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> X264_VERSION </span><span class="str" style="color: rgb(0, 136, 0);">""</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="com" style="color: rgb(136, 0, 0);">// no configure script for msvc</span></code></li><li class="L1" style="list-style-type: decimal; background-color: rgb(238, 238, 238);"><code><span class="com" style="color: rgb(136, 0, 0);">#define</span><span class="pln" style="color: rgb(0, 0, 0);"> log2f</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">x</span><span class="pun" style="color: rgb(102, 102, 0);">)</span><span class="pln" style="color: rgb(0, 0, 0);"> </span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">logf</span><span class="pun" style="color: rgb(102, 102, 0);">(</span><span class="pln" style="color: rgb(0, 0, 0);">x</span><span class="pun" style="color: rgb(102, 102, 0);">)*</span><span class="lit" style="color: rgb(0, 102, 102);">1.4426950408889634f</span><span class="pun" style="color: rgb(102, 102, 0);">)</span></code></li><li class="L2" style="list-style-type: decimal;"><code><span class="com" style="color: rgb(136, 0, 0);">#endif</span></code></li></ol>

编译,成功2个。
在bin文件夹下成功生成libx264.lib和x264.exe两个文件,大功告成。
推荐博文:http://jmvc.blog.sohu.com/145356341.html(里面有一些函数的注解很不错)

下面的是我修改好的源文件:

http://115.com/file/c2bujtuh#
x264-snapshot-20091006-2245.rar


from:http://wuyuans.com/2011/12/vs2010-complies-x264-20091006/


二:《windows下编译最新的x264》

 X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的。x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的(当然有精力可以全部改成C89),生成的.a库是也是没法调用的,如何转化成可用.lib库就比较重要了。 

1下载最新的x264
http://videolan.mirror.aussiehq.net.au/x264/snapshots/解压到d盘

2下载mingw+msys进行配置,这里有已配置好的,直接下载用就可以了
http://code.google.com/p/msys-cn/wiki/ChapterInstallation

但是这个配置好的编译工具,没有包含Yasm,因此,在编译过程中会出现Found no assembler的字样

解决方法:

下载http://yasm.tortall.net/Download.html的源码,当前最新源码版本是1.2.0,下载Source .tar.gz,然后解压到D:\yasm-1.2.0

进入mingw+msys,执行msys.bat,依次执行命令

cd /d/yasm-1.2.0 (进入目录)

./configure 回车 (执行配置文件)
make 回车 (开始编译)
make install 回车 (安装)
安装后,将会在MSYS的目录下多出一个local目录,将此目录下的所有文件拷贝到MSYS的目录的mingw,我本机的目录为:G:\VC\x264 bilud\MSYS\mingw
3 编译x264 
进入当前x264所在d盘的目录,执行./configure --enable-shared,然后make,即可生成x264的dll


 


4 利用VC提供的工具导出lib
下载poxports
http://download.csdn.net/source/3036251解压到VC所在的安装目录,比如说
C:/Program Files(x86)/Microsoft Visual Studio 10/VC/bin,解压以后pexports.exe拷贝至bin目录下
导出lib库,win7下这个dll千万不能放上面bin的目录下,否则会出现could not load PE image
pexports d:\\libx264-120.dll > d:\\libx264-120.def 
lib /machine:x86 /def:d:\\libx264-120.def /out:d:\\libx264-120.lib

5 测试导出的库是否正确
拷贝新生成的库libx264-120.lib和libx264-120.dll到新建的win32 工程下
拷贝原x264目录下的x264.h与x264_config.h至所建的win32工程下
下载pthreadGC2.dll和stdint.h
用如下程序测试
#include <iostream>
#include <string>
#include "stdint.h"
extern "C"
{
#include "x264.h"
#include "x264_config.h"
};
using namespace std;
int main()
{
x264_param_t param;
x264_param_default(&param);
return 0;
}

from:http://niulei20012001.blog.163.com/blog/static/7514721120122605835954/


//

以上两篇文章写的不错;

如果要应用的话,还是要用最新版本的,vc版本可以学习用;


关于第二篇文章,启动名字不太好,因为随着时间段推移,版本号会变,编译方法可能也会变化,所以,建议在标题中或内容中添加版本号


这里要着重说一下第二篇文章,

1,我在按照上面的方法configure的时候出现了一个问题,关于opencl的问题,版本是:x264-snapshot-20140520-2245 ;

修改上面的configure命令为:./configure --enable-share --disable-opencl 

编译通过;


2,关于lib,不需要转化工具,直接将编译后的文件,libx264.dll.a 修改为 libx264.lib即可;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值