在从 ffmpeg_decoding_loop
添加一些对 ffmpeg 的调用之后,在 Windows 上编译时出现错误(直接在 Windows 上和从 linux 交叉编译时)。
我不明白的是它在 linux/macos 上没有问题。
我多次调用 ffmpeg 代码,但让我们将其归结为一个有代表性的示例。
我称之为:
const AVFilter *buffer_src = avfilter_get_by_name("buffer");
在 linux/macos 上:没问题。在 window 上:
lld-link: error: undefined symbol: avfilter_get_by_name
>>> referenced by .\..\..\media\ffmpeg\ffmpeg_decoding_loop.cc:111
>>> obj/media/ffmpeg/ffmpeg/ffmpeg_decoding_loop.obj:(public: void __cdecl media::FFmpegDecodingLoop::InitFilterGraph(struct AVFrame *))
>>> referenced by .\..\..\media\ffmpeg\ffmpeg_decoding_loop.cc:112
>>> obj/media/ffmpeg/ffmpeg/ffmpeg_decoding_loop.obj:(public: void __cdecl media::FFmpegDecodingLoop::InitFilterGraph(struct AVFrame *))
是否需要在 windows 上进行一些额外的配置?我使用 Visual Studio 2019、Windows 10.0.19041.0 sdk、llvm 10.0.0。
最佳答案
对于那些可能会偶然发现的人:如果您在您的 chromium 代码中使用来自第三方/ffmpeg 的函数,请确保在 third_party/ffmpeg/chromium/ffmpeg.sigs
中指定了这些函数。 .
它仅在为 windows 编译时使用(这就是为什么我的 mac/linux 构建成功的原因)。
关于c++ - lld-link错误编译 Chrome 与ffmpeg附加调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64893059/