工作中遇到的一些小问题,总结的小知识记录:C++/Qt
小知识7
编译FFMPEG遇到的问题
具体的编译方法就略了,可以参考:
https://blog.csdn.net/weixin_58320200/article/details/134010291
主要是调用的时候,因为忽略了一个细节,就导致遇到了依赖问题:
在cpp下引用FFMPEG的头文件,需要用extern添加头文件(在上面的引用文章中其实也提到了):
因为FFmpeg是一个用C语言编写的库,所以要告诉C++编译器以C语言的方式进行编译。
当C++程序调用C语言库时,如果直接包含C语言库的头文件,C++编译器会对库中的函数进行名称修饰,这会导致链接时找不到对应的函数名,因为链接器期望的是原始的C语言函数名。
CMakeLists.txt配置FFMPEG的依赖方式:
#依赖库
target_link_libraries(${PROJECT_NAME}
PRIVATE
Qt5::Core
Qt5::Gui
Qt5::Widgets
${OpenCV_LIBS}
${FFmpeg_DIR}/bin/avformat.lib
${FFmpeg_DIR}/bin/avcodec.lib
${FFmpeg_DIR}/bin/avdevice.lib
${FFmpeg_DIR}/bin/avfilter.lib
${FFmpeg_DIR}/bin/avutil.lib
${FFmpeg_DIR}/bin/postproc.lib