使用cmake链接ffmpeg错误
我使用cmake使用ffmpeg lib创建我的项目,项目很简单使用cmake链接ffmpeg错误,ffmpeg,cmake,linker,Ffmpeg,Cmake,Linker,我使用cmake使用ffmpeg lib创建我的项目,项目很简单 add_executable(testffmpeg main.cpp) link_directories( /usr/lib/x86_64-linux-gnu ) target_link_libraries(testffmpeg libavcodec.a libavutil.a ) make时,有很多未定义的引用错误(我的默认cxx编译器是“export-cxx=/usr/bin/clang++”)导致的clang 但当我只使用
add_executable(testffmpeg main.cpp)
link_directories( /usr/lib/x86_64-linux-gnu )
target_link_libraries(testffmpeg libavcodec.a libavutil.a )
make时,有很多未定义的引用错误(我的默认cxx编译器是“export-cxx=/usr/bin/clang++”)导致的clang
但当我只使用命令时,它就可以了
clang -o testffmpeg -lavutil -lavcodec main.cpp
在使用gcc时也会出现此错误
gcc-o testffmpeg-lavutil-lavcodec main.cpp
那么,如何解决这个问题以及错误在哪里呢?您需要在链接器标志中添加-lcrystalhd。 您可以使用下面的代码查找所有链接器标志
pkg-config --libs libavformat
-L/usr/local/lib -lavformat -lXv -lX11 -lXext -ldl -lvdpau -lva -lva-x11 -lX11 -lva -lva-drm -lva -lxcb -lxcb-shm -lxcb -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lxcb-shape -lxcb -lsndio -ljack -lasound -lSDL2 -lx264 -lcrystalhd -lm -llzma -lbz2 -lz -pthread -lavcodec -lXv -lX11 -lXext -ldl -lvdpau -lva -lva-x11 -lX11 -lva -lva-drm -lva -lxcb -lxcb-shm -lxcb -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lxcb-shape -lxcb -lsndio -ljack -lasound -lSDL2 -lx264 -lcrystalhd -lm -llzma -lbz2 -lz -pthread -lswresample -lm -lavutil -lm
可能重复我尝试这个,但不能解决我的问题。我认为关键问题在于链接器无法解析libavcodec使用的函数。a仅在“libavcodec.a(crystalhd.o):在函数
receive\u frame':(.text+0xef):未定义对
dtsprocutnocopy'的引用”时链接错误
pkg-config --libs libavformat
-L/usr/local/lib -lavformat -lXv -lX11 -lXext -ldl -lvdpau -lva -lva-x11 -lX11 -lva -lva-drm -lva -lxcb -lxcb-shm -lxcb -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lxcb-shape -lxcb -lsndio -ljack -lasound -lSDL2 -lx264 -lcrystalhd -lm -llzma -lbz2 -lz -pthread -lavcodec -lXv -lX11 -lXext -ldl -lvdpau -lva -lva-x11 -lX11 -lva -lva-drm -lva -lxcb -lxcb-shm -lxcb -lxcb-xfixes -lxcb-render -lxcb-shape -lxcb -lxcb-shape -lxcb -lsndio -ljack -lasound -lSDL2 -lx264 -lcrystalhd -lm -llzma -lbz2 -lz -pthread -lswresample -lm -lavutil -lm