cygwin 上的 FFMPEG 无法编译 libx264 错误:未知类型名称“HMODULE”

Iva*_*Lee 5 cygwin ffmpeg libx264

我正在尝试在 cygwin 环境下在 ffmpeg 中编译 libx264。

我遵循了来自Koohiimaster 博客FFMPEG 编译指南SO post 1SO post 2 的几个来源的一些指示,但我总是停留在同一步骤,即 libx264 编译(制作)过程。

如 FFMPEG 编译指南中所述,应遵循这些步骤以使 libx264 正常工作

cd ~/ffmpeg_sources
wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar xjvf last_x264.tar.bz2
cd x264-snapshot*
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" bindir="$HOME/bin" --enable-static --disable-opencl
PATH="$HOME/bin:$PATH" make
make install
Run Code Online (Sandbox Code Playgroud)

但是当我输入此命令时PATH="$HOME/bin:$PATH" make,编译器总是会因以下错误而停止:

In file included from input/avs.c:49:0:
./extras/avisynth_c.h:825:3: error: unknown type name ‘HMODULE’
HMODULE handle;
^
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是 libx264 源的错误,但在我尝试了几个早期的源版本后,它产生了同样的错误。有什么想法可以解决这个问题吗?

Jan*_*Jan 5

信息

类型HMODULEWinDef.h. 所以你缺少包含这个标题。我认为通常WinDef.h包含在windows.h.

备选方案 1:没有 AVS

如果您不需要 avs 支持,您可以禁用它并查看它是否有效,然后:

PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" bindir="$HOME/bin" --enable-static --disable-opencl --disable-avs
Run Code Online (Sandbox Code Playgroud)

实际上,这是一个不错的选择,只需检查一下它是否可以为您提供有关您的问题的更多信息。

备选方案 2:检查 windows.h

另一件事是检查windows.h您的配置中使用了哪个文件。

在 libx264 源代码中input/input.h包括windows.h.

input.h本身然后被包含在avs.c. avs.c也包括extras/avisynth_c.h其后。所以总而言之,当HMODULE handle编译器出现该行时,windows.h应该已经包含在内(WinDef.h应该包含在何处)。

因此,要么您的windows.h文件在某种程度上“错误”,要么在预处理过程中确实出现了问题。