一:首先需要下載Xvid1.2.2的源代碼,在Xvid網(wǎng)站上可以下載。
網(wǎng)站主頁(yè)http://www.xvid.org/Home-of-the-Xvid-Codec.1.0.html,
版本1.2.2源代碼下載頁(yè)網(wǎng)址http://www.xvid.org/Downloads.43.0.html,下載鏈接為xvidcore-1.2.2.zip 大小為870k多一點(diǎn)。
二:下載后解壓,得到文件夾xvidcore。備用。
三:源代碼中有匯編代碼,需要下載匯編器nasm.exe進(jìn)行編譯。下載網(wǎng)址為http://sourceforge.net/projects/nasm/,
下載最新版本的nasm編譯器,我下載的版本為2.07,鏈接為 nasm-2.07-installer.exe (687.8KB) 大小為687.8k。
四:下載后安裝。進(jìn)入安裝文件夾,復(fù)制可執(zhí)行文件nasm.exe到vs2008的安裝路徑 \Microsoft Visual Studio 9.0\VC\bin 下。
五:進(jìn)入路徑\xvidcore\build\win32,先打開VS2008,再將路徑中的文件libxvidcore.sln拖入VS2008中打開。拖入后,立刻彈出工程轉(zhuǎn)換對(duì)話框,按照對(duì)話框?qū)⒐こ剔D(zhuǎn)換為vs2008版本。打開后在 解決方案資源管理器 中可以看出 有1個(gè)解決方案(libxvidcore)3個(gè)項(xiàng)目(libxvidcore,xvid_decraw,xvid_encraw)。
六:先編譯debug版本,選擇菜單欄中的 生成/批生成 ,選擇3個(gè)項(xiàng)目的debug版本,win32平臺(tái)進(jìn)行生成。會(huì)出現(xiàn)以下錯(cuò)誤:
第一類錯(cuò)誤:LINK : fatal error LNK1104: 無(wú)法打開文件“xvidcore.dll.a”
解決方法步驟:
1:選中項(xiàng)目libxvidcore,右鍵點(diǎn)擊,屬性,配置屬性,高級(jí),導(dǎo)入庫(kù),將 bin\xvidcore.dll.a 修改為bin\libxvidcore.lib。
2:選中項(xiàng)目xvid_decraw,右鍵點(diǎn)擊,屬性,配置屬性,輸入,附加依賴項(xiàng),將xvidcore.dll.a修改為libxvidcore.lib。
3:選中項(xiàng)目xvid_encraw,右鍵點(diǎn)擊,屬性,配置屬性,輸入,附加依賴項(xiàng),將xvidcore.dll.a修改為libxvidcore.lib。
解決了第一類錯(cuò)誤后再次生成仍然出現(xiàn)失敗。因?yàn)榇嬖诘诙愬e(cuò)誤,錯(cuò)誤內(nèi)容為
項(xiàng)目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: 某個(gè)工具從以下位置返回了錯(cuò)誤代碼: "\xvidcore\src\plugins\x86_asm\plugin_ssim-a.asm"
項(xiàng)目xvid_decraw和xvid_encraw錯(cuò)誤同為
LINK : fatal error LNK1104: 無(wú)法打開文件“libxvidcore.lib”
說(shuō)明一下,libxvidcore.lib需要在libxvidcore項(xiàng)目中生成,而該項(xiàng)目還未通過編譯,更沒生成文件,當(dāng)然打不開libxvidcore.lib文件了。因此先要讓libxvidcore項(xiàng)目通過編譯生成libxvidcore.lib文件。而libxvidcore項(xiàng)目中的錯(cuò)誤為這類錯(cuò)誤nasm: error: more than one input file specified。提示有 某個(gè)工具從以下位置返回了錯(cuò)誤代碼: "\xvidcore\src\plugins\x86_asm\plugin_ssim-a.asm"
第二類錯(cuò)誤:nasm: error: more than one input file specified
解決步驟:
1:在解決方案資源管理器中點(diǎn)擊項(xiàng)目libxvidcore,找到plugin_ssim-a.asm文件,右擊,屬性,配置屬性,自定義生成步驟,常規(guī),命令行。打開命令行編輯其中的內(nèi)容;
其中的內(nèi)容為 nasm -f win32 -DWINDOWS -I..\..\src\ -o $(IntDir)\$(InputName).obj $(InputPath)
改為nasm -f win32 -DWINDOWS -I..\..\src\ -o "$(IntDir)\$(InputName).obj" "$(InputPath)"然后確定。
再次生成仍然有該類問題,如上同樣辦法繼續(xù)解決。知道解決所有的該類問題后就可以成功生成了。
2:特殊情況
處理colorspace_yuyv_mmx.asm,colorspace_rgb_mmx.asm,colorspace_yuv_mmx.asm三個(gè)文件的該類問題時(shí),以colorspace_yuyv_mmx.asm為例。
命令行中的內(nèi)容為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)"
注意同上面的區(qū)別。
七:第二類問題解決完后就可以生成了。不過生成的是debug版本,如要release版本,好像又要出現(xiàn)以上問題,又要重新修改,很是麻煩。但最終還是能夠全部成功生成。
說(shuō)明,以上的解決方法來(lái)自多篇的網(wǎng)絡(luò)博客或總結(jié),但沒有詳細(xì)的過程,其中有注意的地方也沒有提示,讓我琢磨了很久,最終經(jīng)過我的實(shí)踐后寫成,希望對(duì)其他人有所幫助。
參考附錄:
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