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

VS2015编译AV1编码器源码遇LNK2019链接错误求助

解决VS2015编译AV1编码器生成exe时的LNK2019标准库链接错误

我之前在VS2015里折腾AV1编码器源码的时候也碰到过几乎一模一样的问题,给你几个我亲测有效的解决方向:

  • 检查运行库编译选项一致性
    这个是最常见的原因:aomdec.lib的编译运行库选项和你的exe项目不匹配。标准库函数在静态(MT/MTd)和动态(MD/MDd)编译模式下的符号名称完全不同,动态模式下会带__imp__前缀,静态模式则没有。
    操作步骤:右键exe项目 → 属性 → 配置属性 → C/C++ → 代码生成 → 运行库,确保这里的选项和编译aomdec.lib时的选项完全一致(要么都是/MT(Release)//MTd(Debug),要么都是/MD//MDd)。

  • 手动添加标准库依赖
    有时候VS的默认配置会漏掉标准库的链接,你可以手动指定:
    右键exe项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖项,添加对应的库:

    • 如果用动态运行库(MD/MDd):添加msvcrt.lib
    • 如果用静态运行库(MT/MTd):添加libcmt.lib
      也可以直接在exe项目的主源码文件开头加一行#pragma comment(lib, "msvcrt.lib")(对应MD)或者#pragma comment(lib, "libcmt.lib")(对应MT),强制链接对应库。
  • 检查源码中的头文件与宏定义
    看看_file_is_obu所在的源文件有没有正确包含<stdio.h>,有时候漏加头文件会导致函数声明不完整,触发链接错误。另外,AV1源码可能依赖Windows平台的特定宏,比如_CRT_SECURE_NO_WARNINGS,你可以在项目的预处理器定义里加上这个宏(右键项目 → 属性 → 配置属性 → C/C++ → 预处理器 → 预处理器定义)。

  • 确认平台位数匹配
    确保aomdec.lib的编译平台(x86/x64)和你的exe项目完全一致。如果库是32位的,但你编译64位exe,也会出现这类符号找不到的错误。检查项目属性里的“平台”选项,和编译库时的平台对齐。

如果以上方法都不行,建议重新编译aomdec.lib,严格按照你当前exe项目的配置来选运行库、平台位数,这样能从根源上避免不兼容的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:27:21