一:首先需要下載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版本,好像又要出現以上問題,又要重新修改,很是麻煩。但最終還是能夠全部成功生成。
說明,以上的解決方法來自多篇的網絡博客或總結,但沒有詳細的過程,其中有注意的地方也沒有提示,讓我琢磨了很久,最終經過我的實踐后寫成,希望對其他人有所幫助。
參考附錄:
vs2008編譯xvid-1.2.2的libxvidcore.lib的方法: http://blog.csdn.net/osoon/archive/2009/11/08/4785673.aspx
[XviD-devel] need the file libxvidcore.lib:http://list.xvid.org/pipermail/xvid-devel/2008-December/006031.html
Visual Studio 2008 XviD編譯過程:http://blog.sina.com.cn/s/blog_4c451e0e0100ahxg.html