X264的编译(QT版和VS)

首先到X264官网下载源代码,网址是:http://www.videolan.org/developers/x264.html。因为X264的编译过程需要Linux环境,所以需要在windows下面装一个模拟,比较常用的是mingW+msys(个人感觉cygwin也可以,只不过可能稍微复杂一些,因为cygwin需要调用外部的编译器)。进入mingw官网http://www.mingw.org/下载mingw的在线安装包,运行之后选择basic setup,不过要勾选上mingw32-gcc-g++。点击应用改变开始安装。在安装过程当中可能会因为网速问题导致一些文件下载不下来,可以在发出警告提示的时候把这些文件名称记录下来,然后单独下载安装。

安装mingw完成之后,需要配置环境变量,环境变量用于搜索编译器。我的mingw安装路径是D:\mingw,所以我需要在环境变量里面添加D:\mingw\bin。然后进入D:\mingw\msys\1.0,把下载的源代码解压缩放到这个文件夹当中(或者它的子目录当中),然后执行msys.bat批处理文件。利用cd命令切换到X264文件夹下面(X264是你存放X264代码的目录)执行./configure --enalbe-shared --disable-asm。(因为这里没有下砸相应的yasm汇编编译器,所以后面第二条禁止asm汇编,假设需要添加汇编支持的话,需要下载yasm编译器,并且将yasm放入D:\mingw\bin文件夹当中),然后执行make就生成了相应的.dll文件和.a文件。这个时候已经生成可用于QT工程的动态链接库和相应的静态链接库。将x264.h和x264_config.h和相应的动态链接库和静态链接库文件添加到工程就可以了。但是由于.a文件后缀的静态链接库不能用于VS工程。所以我们还需要生成相应的.lib文件。这里有两个方法生成.lib文件。

第一种利用pexports生成.def文件:

首先到网上下载pexports,也可以在sourceforge网站上找到相应的后缀文件名称为.lzma的文件,将这个文件复制到D:\mingw\msys\1.0文件夹下,对这个文件进行tar命令解压:

输入tar -xvf pexports-0.44-1-mingw32-bin.tar.lzma命令

就会在当前文件夹下面生成一个bin文件,我们所需要的pexports就在这个文件夹里面。将这个文件夹拷贝到D:\program files\VS2010\VC\bin这个文件夹当中。然后启动vs2010的CMD(注意这里是启动vs2010的cmd,而不是系统的cmd,前者会设置VS2010的环境,而后者不会),

执行命令:pexports d:\\x264-shared\libx264-142.dll > d:\\x264-shared\libx264-142.def

这里实际上是利用控制台的重定义输出,将pexports的输出给重定义到文件libx264-142.def当中。

然后输入命令:lib /machine:x86 /def:d:\\x264\libx264-142.def /out:d:\\x264\libx264-142.lib

生成相应的.lib文件。到这一步就生成了可用于VS的静态库文件。

第二种利用VS自带的dumpbin生成.def文件。

直接启动vs的cmd,然后输入以下命令:dumpbin /exports d:\\x264-shared\libx264-142.dll > d:\\x264-shared\libx264-142.def

这里实际上也是利用的输出重定向,将输出给放到文件当中。其实还可以利用dumpbin的/out选项将所有的输出给写到文件当中。

这一步之后,就需要自己编辑.def文件(因为dumpbin生成了多余的信息)我们需要改变这个文件使得它和.def文件格式相符合(具体格式参考MSDN)。




你可能感兴趣的:(C++,库)