You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2008使用FFmpeg开发库遇LNK2019未解析外部符号问题求助

解决VS2008 MFC项目中FFmpeg的LNK2019(_avcodec_register_all未解析)错误

我来帮你排查这个链接错误,这类问题大多是链接阶段没正确找到FFmpeg的库文件导致的,咱们一步步来梳理可能的问题和解决办法:

  • 确认附加依赖项里添加了正确的.lib文件
    打开项目属性,依次进入「链接器」→「输入」→「附加依赖项」,把FFmpeg相关的库文件加进去,比如avcodec.lib、avutil.lib(avcodec_register_all依赖avutil),如果用到其他模块还要加上对应lib,比如avformat.lib等。别漏了关键的库,不然链接器找不到对应的符号。

  • 检查附加库目录的路径是否正确
    进入「链接器」→「常规」→「附加库目录」,确保这里填写的是你下载的FFmpeg开发库中lib文件夹的绝对路径(或者相对路径,确保项目能找到),路径写错的话,链接器根本找不到你加的那些.lib文件。

  • 验证extern "C"的写法是否准确
    一定要把包含FFmpeg头文件的代码块整个包裹在extern "C"里,而不是只单独声明函数,比如:

    extern "C" {
        #include <libavcodec/avcodec.h>
        #include <libavformat/avformat.h>
    }
    

    因为FFmpeg是C语言写的,C++编译器会对函数名做命名修饰,用extern "C"才能让编译器按照C的规则解析这些函数名,避免符号不匹配。

  • 确保库的平台和项目平台一致
    如果你的VS项目是Win32(32位)平台,必须用32位版本的FFmpeg开发库;如果是x64(64位)平台,就得对应64位的库。32位和64位库混着用肯定会出现链接错误。

  • 检查运行库设置是否匹配
    进入「C/C++」→「代码生成」→「运行库」,确保你的项目运行库设置和FFmpeg编译时的一致。比如FFmpeg通常用多线程DLL(/MD),那你的项目也要设置成/MD(或者/MDd用于Debug),运行库不匹配也会导致链接失败。

  • 确认是否存在重复定义或库版本问题
    如果你之前用过旧版本的FFmpeg库,要确保项目里没有残留旧的头文件或库文件,避免版本冲突。最好清理一下项目的中间文件(比如Debug/Release文件夹),然后重新编译。

内容的提问来源于stack exchange,提问作者DM1974

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:47:50