2013-12-16 97 views
2

我有一個簡單的C代碼,它使用ffmpeg中的libavcodec的一些函數。我嘗試(使用MinGW的Windows中)來編譯gcc代碼如下:如何在gcc中使用庫「.lib」和「.a」文件

gcc -o mycode mycode.c 

,但我得到了很多,如「未定義的引用av_free」的錯誤。我知道這些函數是在ffmpeg的庫中定義的。我可以訪問諸如avcodec.liblibavcodec.dll.a之類的文件,但我不知道如何將它們用於gcc,以便我可以編譯並生成我的文件。任何想法如何解決這個問題?

+0

僅在Windows上使用?如果是這樣,請確定您正在使用哪個GCC發行版(mingw,cygwin ...) – SirDarius

+0

@SirDarius:是的,我正在使用mingw。我在編輯中提到過這個。 –

回答

0

試着這麼做:

gcc -o mycode mycode.c -L C:\path\to\avcodec -lavcodec 

我沒有Windows,所以我不能測試它自己。

問題是你需要告訴gcc一些函數在avcodec.lib/.dll中。在-L之後,您會告訴.a/.dll的位置,然後您必須通知鏈接器實際考慮與-lavcodec對應的avcodec.lib/.dll。

+0

謝謝阿里。我嘗試了你的建議,但我仍然得到相同的錯誤。 –

+0

@BlueSky最有可能你需要鏈接其他庫,而不僅僅是avcodec.lib。 – Ali

+0

我相信av_free是在libavutil中,所以添加'-lavutil' – szatmary