Subject: Re: bug#12878: 24.2; Compiling failed on Windows 7 with VC 11 Express: _WIN32_WINNT version too low

From: Eli Zaretskii <[email-masked]>
Date: Tue, 13 Nov 2012 18:33:52 +0200

> Date: Tue, 13 Nov 2012 19:11:34 +0800
> From: 李丁 <[email-masked]>
> 
> I tried to compile emacs 24.2 on Windows 7 with Visual C++ 11.0 Express,
> and I found that EnumSystemLocales in w32proc.c and w32select.c were
> compiled as is (not as __stdcall function with postfix decorations), which
> causes the linking failure.
> 
> I read through the sources and found that config.h defined _WIN32_WINNT as
> 0x0400, which corresponds to Windows NT4. However MSDN says that
> EnumSystemLocales requires at least Windows 2000 (0x0500). So you should
> probably either require a higher Windows version or use some other
> mechanism to accomplish what EnumSystemLocales does.

Would adding a correct prototype for EnumSystemLocales to w32term.h
(included by both source files you mention) do the trick?

(I don't want to bump up _WIN32_WINNT, because that might produce an
executable which won't run on Windows 9X, which we still try to
support.)