這幾天想研究一下ffmepg的庫(kù)壁公,自己的開(kāi)發(fā)環(huán)境是mac啤斗,在網(wǎng)上搜索了一下在mac上用什么IDE開(kāi)發(fā)c/c++程序乐横,推薦了很多如Eclipse拥褂,NetBeans娘锁。還有一些人說(shuō)就用Xcode。由于自己懶得重新安裝一個(gè)IDE饺鹃,就直接用Xcode了(我也沒(méi)有用過(guò)Xcode莫秆,想想以后說(shuō)不定有機(jī)會(huì)用Xcode寫(xiě)個(gè)IOS app什么的呢)』谙辏總結(jié)一些用法镊屎。
程序是這篇博客的源代碼《最簡(jiǎn)單的基于FFMPEG+SDL的視頻播放器 ver2 (采用SDL2.0)》。
首先創(chuàng)創(chuàng)建工程茄螃。
下一步可以選擇使用什么語(yǔ)言缝驳,我這里選擇了使用C語(yǔ)言
然后然后工程創(chuàng)建完畢,粘貼進(jìn)代碼归苍,IDE中就會(huì)出現(xiàn)下面的錯(cuò)誤用狱。
關(guān)于C語(yǔ)言的編譯
可以用下面的命令來(lái)編譯這個(gè)工程:
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語(yǔ)言寫(xiě)的代碼能夠編譯成功無(wú)非就兩個(gè)條件:
- 頭文件
- 庫(kù)文件
上面在的錯(cuò)誤屬于頭文件范疇拼弃,就是Xcode無(wú)法找到<avcodec.h>這個(gè)文件齿拂,首先你要安裝ffmpeg然后告訴Xcode這個(gè)頭文件所在的目錄就OK了。
如圖肴敛,在項(xiàng)目設(shè)置面板中的編譯設(shè)置里面搜索【search path】在下面的【Header Search Path】中填寫(xiě)<avcodec.h>所在的路徑就可以了。這時(shí)候在回去看源代碼吗购,之前的那個(gè)報(bào)錯(cuò)沒(méi)有了医男。點(diǎn)擊運(yùn)行,仍然不能編譯運(yùn)行成功捻勉。因?yàn)橹挥蓄^文件是不行的镀梭,真正在程序里調(diào)用的函數(shù)邏輯是被寫(xiě)在庫(kù)文件里的。這個(gè)時(shí)候需要給項(xiàng)目加入一些庫(kù)文件踱启,其實(shí)就是告訴IDE編譯的時(shí)候需要連那些庫(kù)來(lái)生成可執(zhí)行文件报账。
那么我們還是在項(xiàng)目設(shè)置里加入庫(kù)文件研底,這里用的是.dylib庫(kù)文件,而不是傳統(tǒng)的.a文件透罢,沒(méi)花時(shí)間研究榜晦,大概是Xcode就認(rèn).dylib文件吧。
然后還有一個(gè)小問(wèn)題羽圃,就是Xcode的編譯生成的可執(zhí)行文件默認(rèn)在一個(gè)臨時(shí)文件夾乾胶,并沒(méi)有在項(xiàng)目的工程目錄下,所以要在進(jìn)行一個(gè)簡(jiǎn)單的配置朽寞,如下圖
好了點(diǎn)擊運(yùn)行识窿,成功打開(kāi)播放器窗口。
總結(jié)
萬(wàn)變不離其中脑融,在編譯C程序最關(guān)鍵的就是導(dǎo)入正確的頭文件和鏈接庫(kù)文件以生成可執(zhí)行文件喻频。所有IDE都是用一些自動(dòng)的可視化的方式來(lái)做這兩個(gè)事情。