1. 程式人生 > >libx264在VS2013中編譯

libx264在VS2013中編譯

libx264最新版本已經沒有VS工程了,下載以前版本有VS工程,可以編譯成功。libx264裡面有部分彙編程式碼,採用的編譯器是YASM,所以首先要把YASM整合到VS2013中。下面記錄一下編譯中遇到的問題。編譯環境VS2013&&WIN10。

1.解除安裝系統中YASM。搜尋系統中的yasm.exe,yasm.props,yasm.xml,yasm.targetsvsyasm.exe,vsyasm.props,vsyasm.xml.vsyasm.targets。VS2013中一般yasm.exe安裝在C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin,配置檔案在目錄中C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations。

2.下載YASM,地址:http://www.tortall.net/projects/yasm/wiki/Download 安裝32位即可。

3.安裝YASM。解壓安裝包,把yasm.exe複製到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin,配置檔案複製到目錄C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations。

4.下載libx264庫。http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20091006-2245.tar.bz2。

5.解壓x264-snapshot-20091006-2245.tar.bz,用VS2013開啟。

6.libx264專案,需要編譯彙編,設定彙編工具為YASM。

7.可以檢視每一個asm檔案,看看是否編譯到工程中,已經使用的編譯工具。

8.編譯libx264工程,生成成功。

9.編譯x264工程,報錯,因為是日誌,我直接把這行註釋掉的。

10.編譯報錯,找不到x264_lookahead_init等函式。這種情況看錯誤說明是libx264.lib庫裡面沒有找到定義,而libx264.lib庫中,這個函式可能定義在.c檔案,也可能定義在.asm檔案中。可以用xsearch.exe工具搜尋檔案內容,發現有兩個.c檔案有引用這個函式,開啟lookahead.c找到這個函式的定義,說明庫工程編譯時,把這個.c檔案忘記加入了,可能是VS工程更新滯後的原因,把檔案加上,然後編譯。

 11.兩個工程重新編譯,編譯成功。