1. 程式人生 > >vs2010中進行ffmpeg編譯與單步除錯

vs2010中進行ffmpeg編譯與單步除錯

本文在win7 x64系統上實踐後總結得到

1、  下載檔案

2、  安裝MinGW,安裝的時候一定要選中msys,否則要另外下載安裝msys,如果不知道該安裝哪些選項,可選中Basic Setup中所有右邊選項進行安裝,如下圖1所示,然後選擇Installation->update catalogue->review changes->apply,等待安裝


圖1

3、  如果上一步驟中MinGW安裝的目錄為D:/MinGW,則找到D:/MinGW/msys/1.0/msys.bat檔案,開啟檔案並在最前面加上下面一行

call” D:\Program Files(x86)\MicrosoftVisual Studio 10.0\VC\bin\vcvars32.bat”(自己的VC安裝目錄)

4、  將D:\MinGW\msys\1.0\bin\link.exe改成mingw_link.exe,不要和VC的link衝突

5、  將C99-to-C89裡面的c99conv.exe、c99wrap.exe、makedef 複製到D:\MinGW\msys\1.0\bin,將下載的vsyasm.exe放入到D:\ ProgramFiles(x86)\Microsoft Visual Studio 10.0\VC\bin,將D:\MinGW\msys\1.0\bin及D:\MinGW\bin加入到系統變數path中,將msinttypes中的標頭檔案解壓出來,新建系統變數INCLUDE,將變數值改為其所在路徑,重啟計算機(或者最後重啟)

6、  將下載的ffmpeg原始碼解碼並放到D:\MinGW\msys\1.0\home\username目錄下,放置的目錄結構可如下圖2所示


圖2

7、  從選單->所有程式->MicrosoftVisual Studio 2010->Visual Studio tools->Visual Studio x64相容工具命令提示(2010)中啟動D:/MinGW/msys/1.0/msys.bat檔案

8、  在msys環境中轉到你的ffmpeg原始碼檔案,原始碼中第一級目錄應該有configure檔案,輸入指令

./configure –toolchain=msvc –enable-memalign-hack–enable-debug –enable-shared(如圖3)

make

這樣可在你的ffmpeg各級目錄下分別找到編譯生成的dll,lib和exe檔案,同時也能找到對應的pdb檔案

make install

在D:\MinGW\msys\1.0\local檔案下可找到編譯好的include檔案,bin檔案以及物件的lib檔案


圖3

9、  一般經過這一步只能生成ffmpeg.exe和ffprobe.exe兩個應用程式,如果要生成ffpaly.exe應用程式,此時需要將SDL解壓後的檔案中的bin,lib和include三個檔案複製到檔案目錄D:\MinGW\msys\1.0\local下,並與原來檔案合併,同時開啟sdl-config檔案,將prefix=/usr/local/cross-tools/i686-w64-mingw32改成prefix=D:/MinGW,重新make即可生成對應的ffplay.exe(可選)

10、 由於PDB檔案含有可除錯資訊,因此此時可以在vs2010中新建一個專案對你所需的ffmpeg中函式進行除錯,注意需要將第7步中生成的lib,dll,pdb檔案以及include檔案包含進來,這樣就可以正式進行單步除錯了。

值得注意的是,由於在編譯過程中採用了c99轉c89操作,導致pdb中除錯資訊和原始碼雖然大部分單步除錯沒問題,但還是會出現少數程式碼除錯不匹配情況,所以如果非常準確除錯ffmpeg的話最好還是上linux系統除錯,本文方法只適合沒有linux系統而想通過windows上vs2010除錯ffmpeg中大概功能流程的人。

最後,附上兩個參考網址: