Win10 64位编译FFmpeg-3.4.2遇ERROR_NOT_ENOUGH_MEMORY未声明错误
解决Win10 64位编译FFmpeg 3.4.2时
ERROR_NOT_ENOUGH_MEMORY未声明的问题 这个问题我之前帮朋友排查过,本质是FFmpeg 3.4.2这个旧版本在Windows平台下的代码兼容性问题——ERROR_NOT_ENOUGH_MEMORY是Windows系统原生的错误码宏,定义在winbase.h中,但该版本的libavformat/os_support.c文件没有确保这个宏被正确引入。
下面是两种直接有效的解决方法:
方法一:添加必要的Windows头文件引用
- 找到你的FFmpeg源码目录下的
libavformat/os_support.c文件,用文本编辑器打开它。 - 在文件最顶部的头文件引用区域,添加以下代码:
这段代码会在Windows编译环境下自动引入定义了#ifdef _WIN32 #include <winbase.h> #endifERROR_NOT_ENOUGH_MEMORY的头文件。
方法二:手动定义缺失的宏
如果方法一没生效(比如你的编译环境中winbase.h被某些编译选项限制了),可以直接在使用该宏的位置前手动定义:
- 定位到
os_support.c中的ff_gai_strerror函数,找到包含ERROR_NOT_ENOUGH_MEMORY的代码块。 - 在该函数的最开始位置添加:
这里的#ifndef ERROR_NOT_ENOUGH_MEMORY #define ERROR_NOT_ENOUGH_MEMORY 8 #endif8是该错误码对应的数值,和Windows系统定义的一致。
完成修改后,重新运行make命令应该就能顺利编译了。另外提醒一下,FFmpeg 3.4.2是比较老旧的版本,如果后续还有其他兼容性问题,考虑升级到更稳定的新版本会更省心,但如果必须用这个版本,上面的方法足够解决当前问题。
内容的提问来源于stack exchange,提问作者Colin0114
相关产品推荐
相关产品推荐

