ffmpeg函数调用失败--在编译自己的ffmpeg函数的时候显示ffmpeg函数undefined reference to `av_log_set_level(int)‘
生活随笔
收集整理的這篇文章主要介紹了
ffmpeg函数调用失败--在编译自己的ffmpeg函数的时候显示ffmpeg函数undefined reference to `av_log_set_level(int)‘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
cmake 腳本報錯如下:
====================[ Build | ffmpeg_log | Debug ]============================== /opt/clion-2020.2.4/bin/cmake/linux/bin/cmake --build /work/ffmpeg_doc/cmake-build-debug --target ffmpeg_log -- -j 6 Scanning dependencies of target ffmpeg_log [ 50%] Building CXX object src/CMakeFiles/ffmpeg_log.dir/ffmpeg_log/ffmpeg_log.cpp.o [100%] Linking CXX executable ffmpeg_log /usr/bin/ld: CMakeFiles/ffmpeg_log.dir/ffmpeg_log/ffmpeg_log.cpp.o: in function `main': /work/ffmpeg_doc/src/ffmpeg_log/ffmpeg_log.cpp:14: undefined reference to `av_log_set_level(int)' /usr/bin/ld: /work/ffmpeg_doc/src/ffmpeg_log/ffmpeg_log.cpp:17: undefined reference to `av_log(void*, int, char const*, ...)' collect2: error: ld returned 1 exit status make[3]: *** [src/CMakeFiles/ffmpeg_log.dir/build.make:104:src/ffmpeg_log] 錯誤 1 make[2]: *** [CMakeFiles/Makefile2:114:src/CMakeFiles/ffmpeg_log.dir/all] 錯誤 2 make[1]: *** [CMakeFiles/Makefile2:121:src/CMakeFiles/ffmpeg_log.dir/rule] 錯誤 2 make: *** [Makefile:138:ffmpeg_log] 錯誤 2使用nm工具查看庫,看到庫中是有對應的符號信息的
經過以上信息的確認,可以肯定如下:
經過以上的確認在看官方的給的FFmpeg的頭文件吧,結果發現頭文件上沒有支持對C++代碼的兼容,而本地使用的又是C++代碼調用的,因此找不到對應的函數定義,一般的庫都會加上extern "C"的,可能是ffmpeg對C的鐘愛吧,根本沒有考慮C++代碼的調用
解決辦法,告訴編譯器這是個C代碼的庫的頭文件,如下引用頭文件就沒有問題了:
在ffmpeg的頭文件引用的時候加上extern “C”{}
總結
以上是生活随笔為你收集整理的ffmpeg函数调用失败--在编译自己的ffmpeg函数的时候显示ffmpeg函数undefined reference to `av_log_set_level(int)‘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFmpeg入门之常用命令
- 下一篇: Go语言的并发模型