缺少stdc++.lib如何从源码编译生成对应LIB文件
Windows MSVC 编译带libmfx(QuickSync)支持FFmpeg的stdc++.lib缺失问题解决
stdc++.lib是GNU MinGW工具链的C++标准库文件,MSVC原生工具链不使用该库,无需尝试从源码编译该文件,该报错仅由libmfx自带pkg-config(.pc)文件的跨工具链适配问题导致。
具体修复步骤
1. 修正libmfx的.pc配置文件(使用pkg-config场景)
- 找到Media SDK安装目录下的
libmfx.pc文件,默认路径为{MediaSDK根目录}/lib/pkgconfig/libmfx.pc - 打开文件删除
Libs配置行中的-lstdc++参数,保留-lmfx及库路径配置即可 - 修正后重新运行FFmpeg的configure脚本,pkg-config会读取到正确的链接参数
2. 手动指定编译参数(不使用pkg-config场景)
- 直接在FFmpeg配置阶段手动指定libmfx的头文件和库文件路径,跳过pkg-config读取逻辑,配置命令参考:
./configure --enable-libmfx --extra-cflags="-I{MediaSDK根目录}/include" --extra-ldflags="/libpath:{MediaSDK根目录}/lib/x64"
- 若编译32位版本,将路径中的
x64替换为x86即可 - MSVC会自动链接自身的C++标准库
msvcrt.lib(release版)/msvcrtd.lib(debug版),无需额外引入其他标准库
3. 编译结果验证
- 编译完成后执行
ffmpeg -hide_banner -hwaccels,确认输出列表中存在qsv项即代表编译成功 - 执行
ffmpeg -hide_banner -encoders | findstr qsv可查看所有已编译的QSV硬件编码器
内容的提问来源于stack exchange,提问作者Vaughn T
相关产品推荐
相关产品推荐

