天天看點

vs2008編譯Xvid源代碼 1.2.2版本

一:首先需要下載下傳Xvid1.2.2的源代碼,在Xvid網站上可以下載下傳。

二:下載下傳後解壓,得到檔案夾xvidcore。備用。

下載下傳最新版本的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

    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版本,好像又要出現以上問題,又要重新修改,很是麻煩。但最終還是能夠全部成功生成。

     說明,以上的解決方法來自多篇的網絡部落格或總結,但沒有詳細的過程,其中有注意的地方也沒有提示,讓我琢磨了很久,最終經過我的實踐後寫成,希望對其他人有所幫助。

繼續閱讀