我已经使用 Homebrew 安装了 ffmpeg(第 4 版),我正在尝试在 C++ 项目中使用各种 ffmpeg 库,但在链接过程中出现多个错误。
Undefined symbols for architecture x86_64:
"_av_free", referenced from:
_main in main.cpp.o
"_av_packet_alloc", referenced from:
_main in main.cpp.o
"_av_parser_init", referenced from:
And so on ...
我已包含以下库
extern "C" {
#include <libavutil/frame.h>
#include <libavutil/mem.h>
#include <libavcodec/avcodec.h>
}
但是,这仍然行不通。我想我可能在我的 CMakeLists.txt
文件中遗漏了一些东西,目前看起来像这样:
cmake_minimum_required(VERSION 2.6)
project(decode_encode)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS")
add_executable(decode_encode main.cpp)
我很可能需要指定其他链接标志,但是有没有更好的方法来处理 CMakeLists.txt
文件中的链接部分?
原文由 pp492 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,我找到了解决方案。看来 FFmpeg 不支持 CMake 中的 find_package 。我必须按照 这里 的建议手动链接库。
最终的 CMakeLists.txt 看起来像这样
不过,我确信有更好的方法来聚合所有库。