Visual Studio 2005 XviD编译过程

这几天做一个BMP2AVI的转换器,要用到XviD Codec的编码器,使用过程中,发现有一个Status窗口弹出来,压缩过程奇慢
GraphEdit里的结构如下:
PushSourceBitmapSetFilter -> XviD MPEG-4 Codec -> AVI Mux -> FileWriter
并且关闭GraphEdit的时候,关闭不了程序,程序失去响应,怀疑是因为Status窗口造成的,google上搜索了一下,发现需要修改XviD的源代码来去掉这个东西。参见http://topic.csdn.net/t/20040803/21/3239607.html
修改config.c的reg_ints中display_status默认值定义为0
于是从www.xvid.org下载了最新的源代码1.1.2,开始编译,编译过程中发现不少错误。在此把解决方法贴出来,供大家参考:

1、因为我用的编译器是Visual Studio 2005 Team Edition,所以,需要把工程里的xvidcore.dsw工程文件转换成.NET 2005的格式。

2、编译工程里的汇编代码需要用nasm编译器,可以到http://sourceforge.net/projects/nasm/下载一个win32版本,解压到本地,把nasmw.exe改名为nasm.exe
在VS2005 IDE的Tools->Options->Projects and Solutions->VC++Directories->Executable Files里面添加nasm所在的文件夹路径。

3、开始编译,出现如下错误:
    Assembling xxx\src\image\x86_asm\colorspace_yuyv_mmx.asm
    Assembling xxx\src\image\x86_asm\colorspace_yuyv_mmx.asm
    nasm: error: no input file specified
    type `nasm -h' for help
在xvid的论坛上找到了错误原因,因为在VC6工程转换到.NET工程的时候,命令行里的宏给自动加上了双引号,如:
nasm -f win32 -DPREFIX -I"$(InputDir)"\ -o $(IntDir)\$(InputName).obj $(InputPath)
只需要在如下文件的Properties->Custom Build Step->General->CommandLine里面把-I"$(InputDir)"改成    -I$(InputDir)就行了
Image/colorspace_yuyv_mmx.asm
Image/colorspace_yuv_mmx.asm
Image/colorspace_rgb_mmx.asm

4、再编译发现如下错误:
>d:\program files\microsoft visual studio 8\vc\include\crtdefs.h(448) : error C2632: 'int' followed by 'int' is illegal
1>d:\program files\microsoft visual studio 8\vc\include\crtdefs.h(448) : warning C4091: 'typedef ' : ignored on left of '__w64 int' when no variable is declared
再次搜索,发现了如下解决方法:
因为XviD为了移植方便,所以定义了一个intptr_t宏,可以在src/portab.h里面找到,把这一行注释掉就行了,至此,xvidcore.dsw里面的所有工程应该都能编译通过。

5、编译VFW工程,发现如下错误:
Project : error PRJ0019: A tool returned an error code from "Performing Post-Build Event..."
在Project->Properties->Configuration Properties->Build Events->Post-Build Events->Command Line里面有这样的命令:
copy ../build/win32/bin/xvidcore.dll bin
修改成 copy ..\build\win32\bin\xvidcore.dll bin
这样就OK了,VFW工程也编译通过。可以在vfw/bin下面找到inf文件,安装即可。因为我安装的时候,提示该软件没有通过认证,所以没有安装成功,
不过我的电脑上已经装过,所以,在c:\windows\system32\下面可以找到这样的文件,直接把生成的xvidcore.dll和xvidvfw.dll拷贝过去覆盖即可。

6、编译dshow工程,因为它会用到directshow的sample里面的头文件,所以需要在VS2005的Tools->Options->Projects and Solutions->VC++Directories->Include files里面添加directshow SDK安装目录下的Samples\C++\DirectShow\BaseClasses
然后编译BaseClasses生成Debug和Release版本的lib文件,复制到dshow工程目录下面,再编译就应该没有问题了。

以上过程如有疏漏,还请指出,有什么问题欢迎拍砖。

去掉Status窗口以后,程序失去响应的问题也没有了      ^_^

时间: 2024-09-19 04:06:53

Visual Studio 2005 XviD编译过程的相关文章

Visual Studio 2005的编译调试功能

Edit and Contiue功能 在调试程序的时候,经常会遇到这样的情况:在调试一大段代码时,遇到了一个小的错误,比如参数的赋值错误了,这时候,往往希望能够马上将这些小的错误改正过来后,能够继续调试跟踪下去,而不用结束整个调试过程去修改.在Visual Studio 2003中,我们必须停止当前的调试,修改错误的地方,再重新编译,这样十分不方便.在Visual Studio 2005 中,提供了一个新的功能叫"edit and continue",意思是说,当你在调试时,遇到小的错

Chrome Visual Studio 2005下的编译过程_C#教程

编译篇 研究Chrome ,首先得把它编译出来,这对于后续的代码分析和阅读有很大的帮助,想想自己编译出一个 Chrome 浏览器来使用,那是一件很炫的事情. 编译环境准备 Chrome的编译和 WebKit 相比起来,难度上来说,简直是一元二次方程求解和偏微分方程求解的对比(我到现在还没有完整的把 WebKit 编译出来,鄙视一下自己).虽然 Chrome 也是从 WebKit 演进过来,差不多也就是把 WebKit 的 JS 引擎替换成了 V8 .但是不得不承认 Google 把 WebKit

在Visual Studio 2005和ASP.NET 2.0中使用强类型数据存取

asp.net|visual|数据 "Never put off until run time what can be done at compile time."David Gries, Compiler Construction for Digital Computers Introduction 作为程序员,我们在学习一些新技术的时候,范例有时候会是我们最大的敌人.指南通常被设计成简单易懂,但同时里面的懒惰.无效率的甚至是危险的代码编写会增多.像这种情况最普遍存在的就是在ADO.

Visual Studio 2005 集成开发环境

Visual Studio 2005 集成开发环境   作者:ChinaBang时间:2005-04-10Blog: blog.csdn.net/shuaihj                 摘要:IDE增强     内容: Microsoft Visual Studio 2005 包含许多对开发环境新的增强.创新和提高,其目的在于使 Visual  .NET 开发人员比以往更加高效.本章探讨其中的一些功能,并且阐述开发人员如何使用它们以更快.更准确地编写代码. 提示除其他对 IDE 的"改进

学会区分Visual Studio 2005,Visual Studio 2005 Team System和MSDN Premium 订阅的各个版本_基础应用

Mohammad Akif 用图示的方法,说明了Visual Studio 2005所有的产品家族和之前的区别. 475)this.width=475;"> 大家应该了解一些Visual Studio 2005的版本和和功能,学会选择合适的版本,不仅是开发人员,也是每个开发主管应该掌握的常识. 交流的过程中,发现对Visual Studio 2005, Visual Studio 2005 Team System 家族和MSDN Premium subscriptions 版本之间的关系许

Visual Studio 2005中C++的变化

下一代visual studio版本(以前whidbey,现在是visual studio 2005)提供更加丰富的改进的库文件和没有很多幕后精简和加速的压力,它的大量配合的工具和新的功能将使开发者的开发过程变得简单有趣,对我而言,这些与visual studio 2005对C++的处理相比就显得有些苍白,这里我主要谈谈在下一代visual studio中C++的变化. 跟下划线拜拜 在visual studio.NET中引入了对C++扩展名的处理,扩展名是以两个下划线开始的关键字,比如__gc

用Visual Studio 2005创建宏代码生成器

目前的软件并不是自动生成的,但是我们都知道软件将会一代代地发展下去.那么,为什么我们不努力于自动生成的软件?为什么不努力于创造能够一代代自动生长或发展使用的软件而却致力于改变现有的?目前我们所拥有的哪些技术能够支持生成的软件而遗忘了哪些技术呢?对这些问题的回答可能还不存在,但是VS 2005中已经具有一些能力来支持生成的代码了. 在Visual Studio 2005中,你可以使用宏来为你书写代码.这些宏代码生成器并不是随便生成的,而你也不必凭想象和发明来构划要写什么样的宏.两个独立但仍有联系的

Visual Studio 2005快捷键大全

Visual Studio 2005作为一款成熟的集成开发工具,使用它可以加快我们的系统开发效率.而在实际学习工作中,我们除了使用Visual Studio 2005提供的友善的UI来进行操作意外,我们还可以使用其快捷键方式,来快速执行我们的操作.下面列举的Visual Studio 2005快捷键和具体的操作.整理一下与大家分享. [快捷键功能] CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 C

《C++语言入门经典》一1.2 Visual Studio 2010 集成编译环境

1.2 Visual Studio 2010 集成编译环境 C++的开发环境有很多种,例如,常见的Visual C++ 6.0 等.Visual Studio 2010 是微软公司继Visual C++ 6.0 之后新设计的集成开发环境,它更加支持C++标准规范,对新标准--C++0x 提供全面的支持.下面就来介绍它的使用方法. 1.2.1 安装Visual Studio 2010 在安装Visual Studio 2010 之前,首先要了解安装Visual Studio 2010 的必备条件,