日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg函数调用失败--在编译自己的ffmpeg函数的时候显示ffmpeg函数undefined reference to `av_log_set_level(int)‘

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)‘的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。