lld-link 使用 ffmpeg 附加调用编译 chromium 时出错
lld-link error compiling chromium with ffmpeg additional calls
从 ffmpeg_decoding_loop
添加一些对 ffmpeg 的调用后,我在 Windows 上编译时出错(直接在 Windows 上编译和从 linux 上交叉编译时出错).
我不明白的是它在 linux/macos.
上没有问题
我多次调用 ffmpeg 代码,但让我们将其归结为一个代表性示例。
我称之为:
const AVFilter *buffer_src = avfilter_get_by_name("buffer");
在 linux/macos 上:没问题。
在 windows 上:
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 代码中使用来自 third_party/ffmpeg 的函数,请确保在 third_party/ffmpeg/chromium/ffmpeg.sigs
.
中指定了这些函数
它仅在为 windows 编译时使用(这就是为什么我的 mac/linux 构建成功的原因)。
从 ffmpeg_decoding_loop
添加一些对 ffmpeg 的调用后,我在 Windows 上编译时出错(直接在 Windows 上编译和从 linux 上交叉编译时出错).
我不明白的是它在 linux/macos.
我多次调用 ffmpeg 代码,但让我们将其归结为一个代表性示例。
我称之为:
const AVFilter *buffer_src = avfilter_get_by_name("buffer");
在 linux/macos 上:没问题。
在 windows 上:
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 代码中使用来自 third_party/ffmpeg 的函数,请确保在 third_party/ffmpeg/chromium/ffmpeg.sigs
.
中指定了这些函数
它仅在为 windows 编译时使用(这就是为什么我的 mac/linux 构建成功的原因)。