移植x264到vs2008之一
最新的x264已经没有提供windows版的可编译工程,微软的VS编程开发工具无疑是最好的调试工具,要把它移植到vs开发环境下面有很多的工作要做。
网上也有很多人在问找x264的vs版本,本人根据之前在项目中的移植经验,总结如下:
1.从官网上下载最新的x264代码,我下载代码是2012年的版本x264-snapshot-20120108-2245。
2.x264在不同的目录下面有好几个文件名字是相同的,需要重新命名,否则会出现你无法想象到的链接错误。
3.把所有的代码添加到微软的VS2008的开发环境里面,编译。这时候,你会发现有很多编译错误,注意先不要加汇编。
这些编译错误,总的来说,主要是由两类原因引起的。
3.1 x264采用的C99的语法标准,而VS2008的开发环境是不支持这些语法的。
3.2 相应的宏开关没有打开。
对于第一类错误,是一个体力活,也就是把这些C99的语法改成标准的C语言语法。这项工作大概需要2到3天的时间。
对于第二类错误,就是根据相应错误,找到其代码所在的宏,把相应的宏加到工程里面去。需要增加的宏主要如下:
HAVE_STRING_H
__ICL
_WIN32
SYS_WINDOWS
HAVE_THREAD
HAVE_VISUALIZE
ARCH_X86
ARCH_X86_32
4. 这时候,你会发现,还有一些没有定义的宏和其它一些编译错误,有一个宏BIT_DEPTH,这个要重新定义为8。还有有些文件是没有必要加进来的,可以去掉。比如,output目录下面的mp4,flv相关的文件从工程中去掉,input目录里面同样有些文件可以去掉。
5. x264里的有一类宏定义的参数可变的,这种vs开发环境当中不支持的。需要把可变参数宏修改为固定的参数宏定义,代码中用到了几个参数的宏就重新定义几个参数的宏。
6. 当所有的编译错误已经解决之后,就是链接错误。这个比较容易解决,一般都是相关的宏没有打开。找到这些代码对应宏,将宏重新定义上。
7. 如果你完成了上面的过程,你基本上可以再vs平台用c代码跑x264了。