How to Compile XviD with Microsoft Visual C++ 6.0(zhuan)

How to Compile XviD with Microsoft Visual C++ 6.0

How to Compile XviD with Microsoft Visual C++ 6.0
Written by David Carroll
Last updated: January 1, 2003

OK, you've got your copy of Microsoft Visual C++ 6.0. You should be able to just download the source code, click on the project file, and a few second later, you'll have the Xvid Binary. Right? Well, unfortunately, it's not that easy. However, it's not that hard either.

I. Downloading Necessary Files

Xvid depends on a number of libraries and programs that do not come standard with Microsoft Visual C++ 6.0.

You need:

1) Service Pack 5 for Visual Studio 6 - http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/default.asp
I don't believe you actually need Service Pack 5 to compile Xvid However, you should download it to get all the latest bug fixes and runtime libraries. Trust me, it'll make your life easier later when you try to compile other programs. You can download the service pack or order it on CD from the Microsoft Developers Network (MSDN) by clicking the link above.

2) NASM - the famous Netwide Assembler - http://sourceforge.net/projects/nasm/
Xvid uses NASM to "compile" the code written in assembly language (the *.asm files). Download the Win32 binary.

3) DirectX 8.1b SDK - http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp
To build the DirectShow filter, you need the DirectX SDK (Software Development Kit). This SDK is not available by itself on CD, but the Microsoft Platform SDK CD includes the DirectX SDK (along with several other SDK's like the Windows Core SDK, Media Player SDK, etc.). You can order the Microsoft Platform SDK CD from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

II. Configuring the Compiler

1) Installing Service Pack 5

The Service Pack is easy to install since it comes with an installer. The installer's filename is "setupsp5.exe". Just find the file and double-click it.

2) Installing and Configuring NASM

a) Unzip the file to an easy to remember directory of your choosing (i.e., "C:/DEV/NASM")
b) Xvid expects the filename to be "nasm.exe" (probably because all other versions except the Win32 version has that name). For some reason, the Win32 version NASM has a filename of "nasmw.exe." I recommend making a copy of "nasmw.exe" and renaming it "nasm.exe."
c) Load up Microsoft Visual C++.

i) Click on the "Tools" menu and select "Options."
ii) Click on the "Directories" tab.
iii) Select "Executable Files" from the "Show Directories For" dropdown box.
iv) Add the path to NASM (e.g., "C:/DEV/NASM")

3) Installing and Configuring the DirectX SDK

The DirectX SDK comes with an installer. I recommend installing to a directory like C:/DEV/DXSDK.

To configure the DirectX SDK:

a) Load up Microsoft Visual C++.
b) Click on the "Tools" menu and select "Options."
c) Click on the "Directories" tab.
d) Select "Include Files" from the "Show Directories For" dropdown box.
e) Add the following entry: "<path to DirectX SDK>/SAMPLES/MULTIMEDIA/DIRECTSHOW/BASECLASSES" where you replace <path to DirectX SDK> with the actual path to the DirectX SDK (i.e., "C:/DEV/DXSDK").
f) Use the little up arrow icon to move the entries to the top of the list.

III. Compiling XVID

Now you can download the source code, click on the workspace file, and a few second later, you'll have the Xvid Binary. Just make sure you build the xvidcore first.

IV. Installing XVID

For Windows users, there are really only three files you have to be concerned with:

1) xvid.dll and xvid.inf - both of these files are in the "<path to Xvid source code>/vfw/bin/" directory. The "xvid.dll" file is the Xvid Video for Windows codec. This file is necessary if you wish to encode any videos using a Video for Windows compliant program (i.e., almost every video editor out there). In theory, you should be able to play back Xvid files in the Windows Media Player using this file as well although this functionality appears to be broken at this point. Therefore, if you wish to play back files in a media player, install the "xvid.ax" file (see below). The "xvid.inf" file is the setup information file. Basically, this file tells Windows how to install "xvid.dll".

To install the Xvid Video for Windows codec (aka xvid.dll)

a) Simply right-click the "xvid.inf" and select "Install" from the context menu.

That's it, you're done. To verify that the file has been installed correctly, go to the Control Panel and select "Multimedia", then click on the "Devices" tab and finally see if "XVID" is listed under the "Video Compression Codecs" section. If you wish to uninstall the Xvid codec, select "XVID MPEG-4 CODEC" from the "Add/Remove Program" list in the Control Panel.

2) xvid.ax -This file is in the "<path to Xvid source code>/dshow/bin/" directory. The "xvid.ax" file is the Xvid DirectShow filter. Microsoft has decreed that DirectShow shall replace Video for Windows, so in theory you won't need "xvid.dll". However, this isn't true. Instead, the DirectShow filter is used mostly for playback by newer media players. Most video programs still depend on the Video for Windows codec for encoding.

To install the Xvid DirectShow filter (aka xvid.ax)

a) First copy the "xvid.ax" file to a safe place (i.e., "C:/Program Files/xvid"). The Video for Windows codec is automatically copied to the Windows system directory when you install it. The DirectShow filter is not. Therefore, if you delete the source code directory, you lose your DirectShow filter.
b) Once you have copied the "xvid.ax" file to a safe place, go to the Start Menu and select "Run." Type "<path to Windows>/system/regsvr32 <path to xvid.ax>/xvid.ax" (i.e, C:/windows/system/regsvr32 C:/Program Files/xvid.ax).

That's it, you're done. There really is no easy way to verify that the DirectShow filter was properly installed other than to play a Xvid encoded video. To uninstall the DirectShow filter, go to the Start Menu and select "Run." Type "<path to Windows>/system/regsvr32 /u <path to xvid.ax>/xvid.ax"

V. Troubleshooting FAQ

Q. Why do I get the following error message:

Assembling ../../src/utils/x86_asm/mem_transfer_mmx.asm
Bad command or file name

A. You did not correctly install NASM.

Q. What causes this error: "CXvidDecoder.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_IYUV"?

A. This is caused by an outdated strmbase.lib. You need to build a new one. The path to the project file is <path to DirectX SDK>/samples/Multimedia/DirectShow/BaseClasses/baseclasses.dsw. After you build the library, I recommend you copy the strmbase.lib file to <path to DirectX SDK>/lib.

Q. I have ffdshow, do I need to install the XviD DirectShow filter?

A. No, not really.

Q. When trying to open a workspace file (.dsw), I get an "empty" workspace (i.e., there are no source files listed) and/or
     When trying to open a project file (.dsp), I get a"This makefile was not generated by Developer Studio" error.

A. Often, this can be caused by having UNIX line breaks (LF) in the .dsw and .dsp files, as opposed to Windows line breaks (CR/LF). It is interesting to note that .dsw and .dsp files are just text files; you can open them up in any text editor. If you open the .dsw and .dsp files in a text editor that can't handle UNIX line breaks (namely Notepad) you will probably see big, black squares at the end of lines. You can "fix" this error by following this procedure.

a) Do NOT let Microsoft Visual C++ attempt to fix the problem! Press "No" when prompted.
b) Open the .dsw and .dsp files in a text editor that understands UNIX line breaks. WordPad is one and it is available with most copies of Windows.
c) Once open, simply re-save the file (In WordPad, make sure you set the save as type to "Text Document"). All UNIX line breaks should be converted to Windows line breaks.

Also, I have noticed that some "archive" utilities like Winzip will perform the UNIX -> Windows line break conversion automatically so I recommend you use those utilities. At the time of writing, archive utilities that don't perform this conversion include PowerArchiver and WinRAR.

Q. I get lots of error messages similar to the following:

../../src/quant/x86_asm/quantize_mmx.asm:429: parser: instruction expected
../../src/quant/x86_asm/quantize_mmx.asm:430: symbol `movdqa' redefined

A. You are using an old version of NASM, download a newer version from http://sourceforge.net/projects/nasm/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值