Visual Studio 2005 XviD编译过程

本文介绍了一位开发者在编译XviDCodec过程中遇到的问题及解决方案,包括配置Visual Studio 2005、解决编译错误、去除Status窗口等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天做一个BMP2AVI的转换器,要用到XviD Codec的编码器,使用过程中,发现有一个Status窗口弹出来,压缩过程奇慢
GraphEdit里的结构如下:
PushSourceBitmapSetFilter -> XviD MPEG-4 Codec -> AVI Mux -> FileWriter
并且关闭GraphEdit的时候,关闭不了程序,程序失去响应,怀疑是因为Status窗口造成的,google上搜索了一下,发现需要修改XviD的源代码来去掉这个东西。参见 http://topic.youkuaiyun.com/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窗口以后,程序失去响应的问题也没有了      ^_^
内容概要:本文档详细介绍了一个基于MATLAB实现的跨尺度注意力机制(CSA)结合Transformer编码器的多变量时间序列预测项目。项目旨在精准捕捉多尺度时间序列特征,提升多变量时间序列的预测性能,降低模型计算复杂度与训练时间,增强模型的解释性和可视化能力。通过跨尺度注意力机制,模型可以同时捕获局部细节和全局趋势,显著提升预测精度和泛化能力。文档还探讨了项目面临的挑战,如多尺度特征融合、多变量复杂依赖关系、计算资源瓶颈等问题,并提出了相应的解决方案。此外,项目模型架构包括跨尺度注意力机制模块、Transformer编码器层和输出预测层,文档最后提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,尤其是熟悉MATLAB和深度学习的科研人员、工程师和研究生。 使用场景及目标:①需要处理多变量、多尺度时间序列数据的研究和应用场景,如金融市场分析、气象预测、工业设备监控、交通流量预测等;②希望深入了解跨尺度注意力机制和Transformer编码器在时间序列预测中的应用;③希望通过MATLAB实现高效的多变量时间序列预测模型,提升预测精度和模型解释性。 其他说明:此项目不仅提供了一种新的技术路径来处理复杂的时间序列数据,还推动了多领域多变量时间序列应用的创新。文档中的代码示例和详细的模型描述有助于读者快速理解和复现该项目,促进学术和技术交流。建议读者在实践中结合自己的数据集进行调试和优化,以达到最佳的预测效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值