2014-01-09 67 views
0

我有一個使用ffmpeg的linux eclipse測試項目。 這是奧凱使用命令行就做出如何在Eclipse中正確鏈接ffmpeg項目linux

g++ -o m_vector -I/usr/include -I/usr/local/include m_vector.cpp -lavformat -lavcodec -lavutil -lm -lz -lva -lpthread 

但在日食而連接我得到的錯誤

/home/user/projects/ffmpeg/libavcodec/internal.h:194: undefined reference to `av_rescale_q' 
/usr/local/lib/libavcodec.a(mpegvideo.o): In function `update_picture_tables': 
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:663: undefined reference to `av_buffer_unref' 
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:663: undefined reference to `av_buffer_ref' 
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:664: undefined reference to `av_buffer_unref' 
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:664: undefined reference to `av_buffer_ref' 
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:665: undefined reference to `av_buffer_unref' 
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:665: undefined reference to `av_buffer_ref' 

我交鋒所需的庫的大名單在項目中,我使用「extern c」。我的項目也知道需要包括。挖網沒有給出答案。

+0

我也從git repo中取出新的ffmpeg並手動安裝它 – user3177342

回答

0

交換你鏈接到的庫的順序,一個取決於另一個。最依賴的那個必須是最後一個,在這種情況下是libavutil。

0

這些庫將在path_to_gcc/usr/lib中搜索。希望你bmay沒有那裏的圖書館。添加-L$path-to-libraries

+0

ffmpeg文件在鏈接時有未定義的引用。因此,我添加了 - L \ usr \ local \ lib,其中ffmpeg庫存在,並且沒有任何更改 – user3177342

+0

考慮將路徑導出到變量並將其與'-L'一起使用(看起來很有趣,請嘗試) – nmxprime

0

Ubuntu不同的Windows操作系統。
Ubuntu的排序庫,所以你可以像這樣添加lib:
-lavdevice -lavformat -lavcodec -lavutil -lswscale -lavfilter -lpthread -lz -lm -lswresample
添加完成後。如果你有錯誤:undefined reference to vaCreateBuffer...那麼你應該重建ffmpeg並禁用-lva庫。
示例:您打造:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
更換線路的PATH:
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--bindir="$HOME/bin" \
--disable-vaapi
我不建libx264,libx265,libfdk-aac ..... b/c我不需要。如果你需要,你可以建立。
行代碼:--disable-vaapi禁用-lva lib。

相關問題