zoukankan      html  css  js  c++  java
  • 移植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了。

  • 相关阅读:
    Codeforces Round #631 (Div. 2)
    Codeforces Round #500 (Div. 2) [based on EJOI]
    KMP+状态机
    状态机模型
    最短编辑距离
    stringstream读入-最优乘车
    多重背包
    Codeforces:B. New Year and Ascent Sequence
    查找目录下所有文件使用到的宏
    QProcess调用外部程序并带参执行
  • 原文地址:https://www.cnblogs.com/celerychen/p/2951470.html
Copyright © 2011-2022 走看看