vs2008编译Xvid源代码 1.2.2版本

简介: 处理colorspace_yuyv_mmx.asm,colorspace_rgb_mmx.asm,colorspace_yuv_mmx.asm三个文件的该类问题时,以colorspace_yuyv_mmx.asm为例。

一:首先需要下载Xvid1.2.2的源代码,在Xvid网站上可以下载。

  网站主页http://www.xvid.org/Home-of-the-Xvid-Codec.1.0.html

  版本1.2.2源代码下载页网址http://www.xvid.org/Downloads.43.0.html,下载链接为xvidcore-1.2.2.zip 大小为870k多一点。


二:下载后解压,得到文件夹xvidcore。备用。


三:源代码中有汇编代码,需要下载汇编器nasm.exe进行编译。下载网址为http://sourceforge.net/projects/nasm/

下载最新版本的nasm编译器,我下载的版本为2.07,链接为 nasm-2.07-installer.exe (687.8KB)   大小为687.8k。


四:下载后安装。进入安装文件夹,复制可执行文件nasm.exe到vs2008的安装路径  \Microsoft Visual Studio 9.0\VC\bin  下。


五:进入路径\xvidcore\build\win32,先打开VS2008,再将路径中的文件libxvidcore.sln拖入VS2008中打开。拖入后,立刻弹出工程转换对话框,按照对话框将工程转换为vs2008版本。打开后在 解决方案资源管理器 中可以看出  有1个解决方案(libxvidcore)3个项目(libxvidcore,xvid_decraw,xvid_encraw)。

六:先编译debug版本,选择菜单栏中的 生成/批生成 ,选择3个项目的debug版本,win32平台进行生成。会出现以下错误:

   第一类错误:LINK : fatal error LNK1104: 无法打开文件“xvidcore.dll.a”

   解决方法步骤:

       1:选中项目libxvidcore,右键点击,属性,配置属性,高级,导入库,将 bin\xvidcore.dll.a 修改为bin\libxvidcore.lib

       2:选中项目xvid_decraw,右键点击,属性,配置属性,输入,附加依赖项,将xvidcore.dll.a修改为libxvidcore.lib

       3:选中项目xvid_encraw,右键点击,属性,配置属性,输入,附加依赖项,将xvidcore.dll.a修改为libxvidcore.lib

    解决了第一类错误后再次生成仍然出现失败。因为存在第二类错误,错误内容为

   

    项目libxvidcore为

    nasm: error: more than one input file specified
    nasm: error: more than one input file specified
    nasm: error: more than one input file specified
    nasm: error: more than one input file specified

    type `nasm -h' for help

    Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "\xvidcore\src\plugins\x86_asm\plugin_ssim-a.asm"

   

     项目xvid_decraw和xvid_encraw错误同为

     LINK : fatal error LNK1104: 无法打开文件“libxvidcore.lib”

     说明一下,libxvidcore.lib需要在libxvidcore项目中生成,而该项目还未通过编译,更没生成文件,当然打不开libxvidcore.lib文件了。因此先要让libxvidcore项目通过编译生成libxvidcore.lib文件。而libxvidcore项目中的错误为这类错误nasm: error: more than one input file specified。提示有 某个工具从以下位置返回了错误代码: "\xvidcore\src\plugins\x86_asm\plugin_ssim-a.asm"

   
    第二类错误:nasm: error: more than one input file specified

     解决步骤:

     1:在解决方案资源管理器中点击项目libxvidcore,找到plugin_ssim-a.asm文件,右击,属性,配置属性,自定义生成步骤,常规,命令行。打开命令行编辑其中的内容;

     其中的内容为 nasm -f win32 -DWINDOWS -I..\..\src\ -o $(IntDir)\$(InputName).obj $(InputPath)

    改为nasm -f win32 -DWINDOWS -I..\..\src\ -o "$(IntDir)\$(InputName).obj" "$(InputPath)"然后确定。

    再次生成仍然有该类问题,如上同样办法继续解决。知道解决所有的该类问题后就可以成功生成了。

 

    2:特殊情况

      处理colorspace_yuyv_mmx.asm,colorspace_rgb_mmx.asm,colorspace_yuv_mmx.asm三个文件的该类问题时,以colorspace_yuyv_mmx.asm为例。

    命令行中的内容为nasm -f win32 -DWINDOWS -I$(InputDir)\ -I..\..\src\ -o $(IntDir)\$(InputName).obj $(InputPath)

    需要改为nasm -f win32 -DWINDOWS "-I$(InputDir)\" -I..\..\src\ -o "$(IntDir)\$(InputName).obj" "$(InputPath)"

    注意同上面的区别。


    七:第二类问题解决完后就可以生成了。不过生成的是debug版本,如要release版本,好像又要出现以上问题,又要重新修改,很是麻烦。但最终还是能够全部成功生成。

     说明,以上的解决方法来自多篇的网络博客或总结,但没有详细的过程,其中有注意的地方也没有提示,让我琢磨了很久,最终经过我的实践后写成,希望对其他人有所帮助。

目录
相关文章
|
3月前
|
C++
《起风了》C++源代码
《起风了》C++源代码
jsweet下载编译
jsweet下载编译
44 0
|
C++
inttypes.h源码,VS编译需要
inttypes.h源码,VS编译需要
136 0
|
Java
VS2017编译OpenJDK,编译通过的工程包下载链接
VS2017编译OpenJDK,编译通过的工程包下载链接
58 0
XRename源代码
XRename源代码
68 0
|
编译器 开发工具 C++
|
Android开发 C++ Windows
Ogrekit源码Windows平台编译_Android环境搭建
Ogrekit源码Windows平台编译_Android环境搭建
124 0
|
IDE 程序员 开发工具
如何看懂源代码--(分析源代码方法)
建立架构观点的认识是最重要的事情。虽然这一系列的文章前提为“阅读他人的程式码”,但我们真正想做的工作,并不在于彻底地详读每一行程式码的细节,而是想要透过重点式的程式码“摘读” ,达到对系统所需程度的了解。每个人在阅读程式码的动机不尽相同,需要了解的程度也就有深浅的分别。只有极为少数的情况下,你才会需要细读每一行程式码。
590 0
|
XML 前端开发 数据格式
扒一扒 EventServiceProvider 源代码
Ajax用一句话来说就是无须刷新页面即可从服务器取得数据。注意,虽然Ajax翻译过来叫异步JavaScript与XML,但是获得的数据不一定是XML数据,现在服务器端返回的都是JSON格式的文件。
825 0