這幾天想研究一下ffmepg的庫,自己的開發環境是mac,在網上搜索了一下在mac上用什么IDE開發c/c++程序,推薦了很多如Eclipse,NetBeans。還有一些人說就用Xcode。由于自己懶得重新安裝一個IDE,就直接用Xcode了(我也沒有用過Xcode,想想以后說不定有機會用Xcode寫個IOS app什么的呢)。總結一些用法。
程序是這篇博客的源代碼《最簡單的基于FFMPEG+SDL的視頻播放器 ver2 (采用SDL2.0)》。
首先創創建工程。
下一步可以選擇使用什么語言,我這里選擇了使用C語言
然后然后工程創建完畢,粘貼進代碼,IDE中就會出現下面的錯誤。
關于C語言的編譯
可以用下面的命令來編譯這個工程:
gcc main.c -g -o simplest_ffmpeg_player.out -I /usr/local/include -L /usr/local/lib -lSDL2main -lSDL2 -lavformat -lavcodec -lavutil -lswscale
那么在IDE里該如何配置呢? 讓C語言寫的代碼能夠編譯成功無非就兩個條件:
- 頭文件
- 庫文件
上面在的錯誤屬于頭文件范疇,就是Xcode無法找到<avcodec.h>這個文件,首先你要安裝ffmpeg然后告訴Xcode這個頭文件所在的目錄就OK了。
如圖,在項目設置面板中的編譯設置里面搜索【search path】在下面的【Header Search Path】中填寫<avcodec.h>所在的路徑就可以了。這時候在回去看源代碼,之前的那個報錯沒有了。點擊運行,仍然不能編譯運行成功。因為只有頭文件是不行的,真正在程序里調用的函數邏輯是被寫在庫文件里的。這個時候需要給項目加入一些庫文件,其實就是告訴IDE編譯的時候需要連那些庫來生成可執行文件。
那么我們還是在項目設置里加入庫文件,這里用的是.dylib庫文件,而不是傳統的.a文件,沒花時間研究,大概是Xcode就認.dylib文件吧。
然后還有一個小問題,就是Xcode的編譯生成的可執行文件默認在一個臨時文件夾,并沒有在項目的工程目錄下,所以要在進行一個簡單的配置,如下圖
好了點擊運行,成功打開播放器窗口。
總結
萬變不離其中,在編譯C程序最關鍵的就是導入正確的頭文件和鏈接庫文件以生成可執行文件。所有IDE都是用一些自動的可視化的方式來做這兩個事情。