编译参考xvid源代码中的doc/INSTALL文件,针对其中遇到的问题:
下载NASM
http://sourceforge.net/projects/nasm (Win32版本)
解压缩后得到nasmw.exe, ndisasmw.exe,将nasmw.exe改为nasm.exe后将这两个文件拷到Microsoft Visual Studio/VC98/Bin下。
编译有可能出现以下错误: error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64
如果你的VC是SP5,可以下载 Visual C++ 6.0 Processor Pack - http://msdn.microsoft.com/vstudio/downloads/tools/ppack/default.aspx 解决。
可是Visual C++ 6.0 Processor Pack 却没有针对SP6的,没有办法安装。那么就需要改xvid的源代码了。
在src/portab.h和vfw/src/status.h中
# define uint64_t unsigned __int64
改为:# define uint64_t __int64
xvid源码在Visual C++ 6.0下成功编译的方法 1、从http://sourceforge.net/projects/nasm/下载NASM编译器nasm-0.98.36-win32.zip,解开后放在如:C:/DEV/NASM,将其下的nasmw.exe改名为nasm.exe;
2、从ftp://sources.redhat.com/pub/pthreads-win32下载pthreads-2003-05-10.exe,运行解开后将Pre-built目录放置并改名如:C:/DEV/PTHREADS;
3、从http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp下载DirectX 9.0b,安装在如:E:/DXSDK;
4、配置Visual C++编译环境Tools-〉Options->Directories,
a、在Executable files里加入C:/DEV/NASM;
b、在Include files里加入E:/DXSDK/SAMPLES/C++/DIRECTSHOW/BASECLASSES和E:/DXSDK/INCLUDE,并将它们移到最上面,再加入C:/DEV/PTHREADS/INCLUDE;
c、在Library files里加入C:/DEV/PTHREADS/LIB和E:/DXSDK/LIB;(记住:不要将E:/DXSDK/LIB移到前面,否则编译有错)
5、编译E:/DXSDK/SAMPLES/C++/DIRECTSHOW/BASECLASSES下的baseclasses.dsw,将生成的strmbasd.lib和STRMBASE.lib拷贝到E:/Program Files/Microsoft Visual Studio/VC98/Lib下,即覆盖掉VC原有的这两个库;
6、将xvid目录下欲编译的dsp和dsw文件都用写字板打开后再存一遍,消除unix的格式字符。