說明:該文檔詳細記錄瞭如何在32位WIN7(64位WIN7同樣適用)環境下使用VS2010編譯VLC1.1.5源碼,按照該文檔進行實際編譯時,各個文件的版本需與文檔中描述的版本一致,否則可能出現錯誤。
文末及文中附有供參考的相關鏈接,在此一併對其作者表示感謝。
一、準備工作
1.1下載VS工程的vlc-1.1.5-2010源碼
https://github.com/sunqueen?tab=repositories
點擊vlc-1.1.5-2010鏈接,進入下載頁面
點擊紅框中的Download ZIP,下載vlc-1.1.5-2010
解壓下載的文件,得到vlcwin.15.vs2010.NT.up.zip,再解壓一次,得到源碼文件夾,如下圖所示
1.2下載DirectX June2010 SDK,並安裝
http://www.microsoft.com/en-us/download/details.aspx?id=6812
點擊紅框中的鏈接,下載DirectX June2010 SDK;
雙擊安裝,其中用戶反饋可以選擇NO,其餘默認。
開發包會自動安裝在C:\Program Files\Microsoft DirectXSDK (June 2010)
(注:如果碰到安裝失敗,且Errorcode:S1023,請參考以下鏈接和內容)
http://blog.csdn.net/ts1030746080/article/details/8681550
錯誤原因:
計算機上有安裝過更新版的Microsoft Visual C++ 2010Redistributable,打開“控制面板”的“程序和功能”,果然計算機裏之前有安裝“Microsoft Visual C++ 2010 x86 Redistributable - 1010.0.40219”,而DXSDK_Jun安裝的是“Microsoft VisualC++ 2010 x86 Redistributable - 1010.0.30319”,版本低於本機已安裝的版本,所以安裝出現S1023錯誤。
解決辦法:
卸載更高的版本“Microsoft Visual C++ 2010x86 Redistributable - 1010.0.40219”,再重新安裝即可。卸載“Microsoft Visual C++ 2010x86 Redistributable - 1010.0.40219”影響不大。如果實在需要“Microsoft Visual C++ 2010x86 Redistributable - 1010.0.40219”,可在安裝完DXSDK_Jun10之後再安裝。下載頁面地址(http://www.microsoft.com/en-us/download/details.aspx?id=26999 )
1.3下載Windows SDK7
http://www.microsoft.com/en-us/download/details.aspx?id=3138點擊紅框中的鏈接,下載SDK7
雙擊安裝(注:可能下載的是在線安裝包,也可以下載ISO格式文件,解壓或虛擬光驅裝載安裝)
默認安裝在C:\ProgramFiles\Microsoft SDKs\Windows\v7.1
1.4準備DirectShow的庫文件編譯BaseClasses項目
打開如下的工程,任由轉換向導轉換。
C:\ProgramFiles\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\下的
baseclasses.sln
項目BaseClasses轉換會發生若干警告,無視。
分別在Debug/Release模式下編譯,確認以下庫文件生成:
C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug\strmbasd.lib
C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Release\strmbase.lib
二、設置VS環境
2.1設置DirectX June2010 SDK
VS2010貌似不能按照如下方法:
設置Include:Tools(工具)->Options(選項)->Projects and Solutions(項目和解決方案)->VC++Directoties(VC++目錄),在Include file(包含目錄)中加入路徑
設置Lib:Tools(工具)->Options(選項)->Projects and Solutions(項目和解決方案)->VC++Directoties(VC++目錄),在Library files(庫目錄)中加入路徑
打開剛剛下載解壓好的vlcwin.sln解決方案,打開“屬性管理器”頁面,如圖
在“包含目錄”中添加如下路徑,注意順序,可能會影響編譯,也可能某個路徑不需要。
(爲防止出錯,可單擊該行,點右邊的下拉三角,選擇“編輯”,逐條添加即可):
C:\Program Files\Microsoft DirectX SDK (June 2010)\Include;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Include\gl;
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses;
C:\Program Files\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\common;
在“庫目錄”中添加如下路徑
C:\ProgramFiles\Microsoft DirectX SDK (June 2010)\Lib\x86;
C:\ProgramFiles\Microsoft SDKs\Windows\v7.1\Lib;
C:\ProgramFiles\MicrosoftSDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug;
[Release編譯需要將上一目錄最後的Debug改爲Release]
三、編譯VLC(編譯Debug版本)
3.1編譯vlcwin, libvlc, libvlccore,libcompat
解決方案資源管理器中,默認的啓動項應該是vlcwin,若不是,則右鍵將其設置爲啓動項,如下圖
選擇vlcwin,單擊右鍵,選擇Rebuild(重新生成),VS會先編譯libcompat,再編譯libccore和libclv, 最後編譯vlcwin。
(右鍵ProjectDependencies(項目依賴項)中可以看到vlcwin依賴libclv和libccore,而libvlccore依賴於libcompat)
編譯完成後在debug 目錄下可以看到編譯後的libvlc.dll, libvlccore.dll和vlcwin.exe等文件。
3.2編譯libplugin
解決方案資源管理器中,選擇libplugin,單擊右鍵,選擇“屬性”,彈開如下圖頁面:
如圖設置,將字符集改爲”未設置”。
(注:默認的字符集是”Unicode”,我直接編譯,出現Error:不能識別的xxxx等錯誤。將字符集改爲”未設置”後,編譯通過,原因暫不明)
選擇libplugin,單擊右鍵,選擇“僅用於項目”->“僅生成libplugin”;
編譯完成後再debug\plugins目錄下可以看到編譯後的libplugin.dll,比較大,約30M左右。
四、運行vlc
雙擊debug目錄下的vlcwin.exe,主界面如下圖:
幫助->關於,如下圖
至此,Debug版本下vlc-1.1.5編譯完成。
後記:如在編譯過程中遇到本文未曾提到的問題,請自行百度或google解決。根據經驗來看,大抵都是環境配置不對所引起的。如果順利的話,恭喜!
參考鏈接:
http://blog.sina.com.cn/s/blog_b7770ea80101ge5j.html
https://forum.videolan.org/viewtopic.php?p=287019
https://forum.videolan.org/viewtopic.php?f=32&t=81793